Java基础之Map集合综述
简介
map集合又称键值对集合
特点
- Map集合都是由键决定的。
- Map集合的键是无序,不重复的,无索引的。
- Map集合的值可以重复
- Map集合键值对都可以为null
- HashMap:元素按照键是无序,不重复,无索引的
- LinkedHashMap:元素按照键是有序的,不重复,无索引的
Map集合的API
-
添加元素 put 方法
Map<String,Integer> map = new HashMap<>();
map.put(“娃娃”,2); -
清除元素 clear()
map.clear()
-
判断集合是否为空
map.isEmpty();
-
获取集合大小
map.size()
-
根据键获取对应值
map.get(“娃娃”)
-
根据键删除某个元素
map.remove(“娃娃”)
-
判断是否包含某个键
map.containsKey(“娃娃”)
-
判断是否包含某个值
map.containsValue(“娃娃”)
-
获取所有键的集合
Set set = map.keySet()
-
获取所有值的集合
Collection values = map.values()
-
将一个集合放入另一个集合
Map<String,Integer> map2 = new HashMap<>()
map.putAll(map2)
集合遍历
1.键找值方式
Set<String> keys = map.keySet();
for(String key: keys){
Integer value = map.get(key);
}
-
键值对方式,把键值对当成一个整体遍历
Set<Map.Entry<String, Integer>> entries = map.entrySet(); for(Map.Entry<String, Integer> entry: entries){ String key = entry.getKey(); Integer value = entry.getValue(); }
-
lambda表达式
map.forEach((k, v) -> { System.out.println(k + ":" + v); })
Map集合自定义类型
map集合键和值都可以为自定义类型
注意重写equals和hashCode方法
LinkedHashMap
注意此map可以按照添加顺序和访问顺序 排序
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
这个accessOrder,它表示:
(1)false,所有的Entry按照插入的顺序排列
(2)true,所有的Entry按照访问的顺序排列
TreeMap
可排序不重复的键值对集合
按照键排序
默认升序
- 可以传递比较器构造treemap
Map<People, String> people = new TreeMap<>(new Comparator(){
public int compare(People p1, People p2){
return Double.compare(p1.getWeight(), p2.getWeith());
}
})
-
可以使用对象实现compareble接口
public class Test implements Comparable