Map
Map集合用于保存映射关系的数据key/Value,其中key不能重复,key和value存在一对一的关系,通过key可以找到value。
Map的方法
Map常用的方法
Map中有三种视图①键集Set(K) keySet()//返回映射中所有键的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。
②值集合Collection(V) values//返回映射中所有值的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。
③键/值对集Set<Map.Entry<K,V>> entrySet()//返回Map.Entry对象(映射中的键/值对)的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。
Map包含一个内部接口Entry,封装了一个key-value对,包含以下方法
getKey():返回key
getValue:返回Value
setValue:重新设置value
1、HashMap和Hashtable
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {
}
public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable {
}
HashMap与Hashtable的区别
HashMap是线程不安全的,Hashtable是线程安全的
Hashtable 使用 null作为key和value, HashMap可以使用null作为key或value。 由于key不能重复, 最多只能有一个key为null
判断key的条件,两个key通过equals方法返回true且hashCode值相等
2、LinkedHashMap
LinkedHashMap是HashMap的子类
LinkedHashMap使用双向链表维护key-value的次序。使迭代顺序和插入顺序一致。
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
{
}
LinkedHashMap linkedHashMap = new LinkedHashMap();
linkedHashMap.put("A", Simon);
linkedHashMap.put("B", Lucy);
linkedHashMap.put("C", Kevin);
linkedHashMap.forEach((key, value) -> System.out.println(key + " ---> " + value));
//Output
A ---> Simon
B ---> Lucy
C ---> Kevin
3、Properties
Properties是Hashtable的子类
getProperty(): 获取属性值, 可以有 defaultValue。
setProperty(): 设置属性值
load():从属性文件中加载到 Properties里
store():输出到指定文件
4、TreeMap
TreeMap是一个红黑树的结构,根据key来进行排序
5、WeakHashMap
WeakHashMap使用弱引用保存键,弱引用将引用保存到另外一个对象中(散列键),对于这种类型的对象,垃圾回收器用一种特有的方式进行处理,通常,如果垃圾回收器发现某个特定的对象已经没有他人引用了,就将其回收。
如果某个对象只能由弱引用来引用,垃圾回收器就会回收它,需要将引用这个对象的弱引用放入队列中,弱引用将周期性地检查队列,以便找出新添加的弱引用。一个弱引用进入队列意味着这个键不在被他人使用,并且已经被收集起来,于是WeakHashMap将删除对应的条目。
6、IdentityHashMap
在这个类中,间的散列值不是用hashCode函数计算,而是用System.identityHashCode方法计算。在两个对象进行比较时,IdenetityHashMap类使用==,而不是使用equals。也就是说,不同键的对象,即使内容相同,也被视为不同的对象。
7、EnumMap
EnumMap是一个键类型为枚举类型的映射