Map接口
Map的特点:
(1)存储的数据是键值对
(2)键不能重复
(4)无序的
实例map集合
Map<String,String> map=new HashMap<>();
//1添加元素
map.put("cn", "中国");
map.put("uk","英国");
//2删除
map.remove("uk")
map.clear();
//3遍历
//3.1使用keySet遍历
System.out.println("---------keySet()----------");
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key+"..........."+map.get(key));
}
//3.2使用entrySet();
System.out.println("---------entrySet()---------");
Set<Entry<String, String>> entrySet = map.entrySet();//Entry(映射对)
for (Entry<String, String> entry : entrySet) {
System.out.println(entry.getKey()+"...."+entry.getValue());
}
//4判断
//4.1isEmpty
System.out.println("判断isEmpty():"+map.isEmpty());
//4.2判断是否包含指定的key
System.out.println("cn:"+map.containsKey("cn"));
//4.3判断是否包含指定的value
System.out.println("韩国:"+map.containsValue("韩国"));
Map常用实现类
HashMap
存储特点:
相对无序存储,元素以键值对形式存在,键不可以重复,值可以重复,元素整体排重,可以快速的通过键查找到所对应的值,通过哈希表实现的集合。
HashMap集合的排重,只需要重写键所属的类的hashCode和equals方法即可。
map集合中若向集合中添加相同键的键值对时,新的值会将旧的值覆盖
LinkedHashMap
LinkedHashMap集合是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。用法与HashSet类似。
存储特点:
有序存储,元素排重,通过链表实现的集合。
TreeMap
存储结构:自平衡红黑二叉树
特点:
1 存储键值对、键不能重复、一个键对应一个值、值可以重复
2 无序,数据会进行排序。
排重依据:Comparable接口的compareTo()方法的返回值。如果返回0就认为是重复的元素。
TreeMap<Person, String> treeMap=new TreeMap<>(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
int n=o1.getAge()-o2.getAge();
int n2=o1.getName().compareTo(o2.getName());
return n==0?n2:n;
}
});