【集合详解】Java集合总结(中)-Map家族
2016-08-04 21:22
447 查看
接上文,本篇博客我们接着谈论有关集合的内容。
java所有的集合分成三大类。Set类似罐子,把一个对象添加到Set集合时,Set集合无法记住添加这个元素的顺序,所以Set里的元素不能重复。List集合非常想一个数组,可以记住每次添加元素的顺序,且List的长度可变。Map集合也想一个罐子,只是它里面的每个数据都有两个值组成。
List根据索引访问,Map根据Key访问其value,Set只能根据本身访问,所以不能重复。
②Hashtable不允许使用null作为key和value。否则会报错“NullPointerException”。但HashMap可以使用null作为key(最多一个null),或Value(可有多个null)
PS:Collections类,提供了大量方法对集合元素进行排序,查询,和修改等操作。还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。
②TreeMap比HashMap和HashTable慢(尤其是插入和删除),因为TreeMap底层采用红黑树管理key-value对。但用TreeMap使对象总是处于有序状态,也是其优势。
③LinkedHashMap比HashMap慢一点,因为它需要维护链表来保持map中的key-value时的添加顺序。IdentityHashMap性能没有特别出色的地方,与hashmap基本相似的实现。只是它使用的==而不是equals()来判断元素相等。EnumMap性能最好,但只能使用同意而枚举类的枚举值作为key。
java所有的集合分成三大类。Set类似罐子,把一个对象添加到Set集合时,Set集合无法记住添加这个元素的顺序,所以Set里的元素不能重复。List集合非常想一个数组,可以记住每次添加元素的顺序,且List的长度可变。Map集合也想一个罐子,只是它里面的每个数据都有两个值组成。
List根据索引访问,Map根据Key访问其value,Set只能根据本身访问,所以不能重复。
Map家族
首先先看Map体系的继承树。Hashtable 和 HashMap
①Hashtable是线程安全的Map实现,但HashMap线程不安全,即HashMap性能稍高一点。但多个线程访问一个map对象时,用hashtable好。②Hashtable不允许使用null作为key和value。否则会报错“NullPointerException”。但HashMap可以使用null作为key(最多一个null),或Value(可有多个null)
性能分析
①Hashtable 和 HashMap相比尽管Hashtable 线程安全,但一般也会采用性能稍高一点的HashMap,并且需要保证线程安全时,可以结合工具类Collections.PS:Collections类,提供了大量方法对集合元素进行排序,查询,和修改等操作。还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。
②TreeMap比HashMap和HashTable慢(尤其是插入和删除),因为TreeMap底层采用红黑树管理key-value对。但用TreeMap使对象总是处于有序状态,也是其优势。
③LinkedHashMap比HashMap慢一点,因为它需要维护链表来保持map中的key-value时的添加顺序。IdentityHashMap性能没有特别出色的地方,与hashmap基本相似的实现。只是它使用的==而不是equals()来判断元素相等。EnumMap性能最好,但只能使用同意而枚举类的枚举值作为key。
总结:
本文主要总结了Java集合中map家族。以及部分map实现类的使用场景和其性能对比。至于Map的Hash算法,虽然博客中没有提到,但对于理解其他基于hash的实现类都很有帮助。相关文章推荐
- 【集合详解】Java集合总结(上)-Collection家族
- Java中的Map集合详解
- Java Collection、Map集合总结
- java集合------Map集合总结
- java集合14--Map总结
- java 常用集合list与Set、Map区别及适用场景总结
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
- java如何对map进行排序详解(map集合的使用)
- java中List、Set、Map、Properties集合的遍历方法总结
- 【集合详解】Java集合总结(下)-常用集合类对比
- java如何对map进行排序详解(map集合的使用)
- Java集合Collection、List、Set、Map使用详解
- Java中Map集合遍历方式总结
- 黑马程序员 java基础--map集合总结
- java集合包List、Set、Map总结
- Java集合体系总结—Map、Set、List、Queue
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
- Java 集合体系详解——Map体系键值对集合
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)