Java集合List、Map、Set等集合详解

 

 

 

List: 有序,可重复

ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高

LinkedList

优点: 底层数据结构是链表,查询慢,增删快。

缺点: 线程不安全,效率高

Set: 无序,唯一

HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。

 

Map:

  • Hashtable是线程安全的、效率较低、不允许null值
  • HashMap不是线程安全的、效率较高、允许null值(key和value都允许)

注:如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。 查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。

 

 

Set和List的区别

  • 1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

  • 2. Set检索效率低,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

  • 3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 

  •  

posted @ 2020-10-12 09:39  猫_头  阅读(162)  评论(1)    收藏  举报