Java集合之Map

来源:互联网 发布:蒙古打到欧洲哪里知乎 编辑:程序博客网 时间:2024/06/11 13:04
一、特点
(1)保存两种数值,key和value(key不允许重复)
(2)keySet()方法,返回map里所有key组成的set集合
(3)value可重复,放入重复的key时value会被覆盖
(3)基本功能:
import java.util.HashMap;import java.util.Map;public class MapTest {public static void main(String[] args) {Map map =new HashMap();map.put("java", 100);map.put("android", 101);map.put("ios", 102);System.out.println(map);System.out.println("是否包含ios的key: "+map.containsKey("ios"));//遍历key-value对for(Object key:map.keySet()){System.out.println(key+"->"+map.get(key));}}}
二、HashMap和Hashtable实现类
(1)Hashtable线程安全,HashMap线程不安全(HashTable和Vector一样古老)
(2)HashMap性能较高
(3)Hashtable不允许null作为key和value,HashMap可以
(4)HashMap和Hashtable不能保证key-value的顺序
(5)判断value相等根据equals()返回true
(6)与HashSet类似,尽量不要使用可变对象作为HashMap和Hashtable的key,如果一定要用,尽量不要在程序中修改key的可变对象(会导致无法准确的找到被修改过的key)

三、LinkedHashMap类
(1)使用双向链表维护key-value的顺序
(2)可避免对key-value的顺序进行排序(只要插入时保持顺序就行了)
import java.util.LinkedHashMap;public class LinkedHashMapTest {public static void main(String[] args) {LinkedHashMap scores=new LinkedHashMap();scores.put("语文", 90);scores.put("数学",70);scores.put("应用", 99);scores.forEach((key,value)->System.out.println(key+"->"+value));}}

四、SortedMap接口和TreeMap类
(1)红黑树数据结构
(2)自然排序,定制排序

五、WeakHashMap
与HashMap基本相似,区别在于HashMap保留了对实际对象的强引用,只要HashMap不被销毁key所引用的对象就不会被垃圾回收,也不会自动删除这些key-value对。而WeakHashMap保留的是弱引用,可能被垃圾回收,也可能自动删除。

六、IdentityHashMap
比较严格,当且仅当key严格相等(key1==key2)才认为相等。HashMap只要equals()返回true即可。

七、EnumMap
与EnumSet类似

八、性能分析
1、HashMap比Hashtable快
2、TreeMap比HashMap和Hashtable慢
3、一般应多使用HashMap
4、LinkedHashMap比HashMap慢一点
5、EnumMap性能最好,但只能使用同一个枚举类的枚举值作为key


0 0
原创粉丝点击