三大集合:List、Map、Set

一、结构特点

(1)List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;

(2)List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)。

 

二、实现类

1.List接口

(1)LinkedList

基于链表实现,链表内存是散列的,增删快,查找慢;

(2)ArrayList

基于数组实现,非线程安全,效率高,增删慢,查找快;

(3)Vector

基于数组实现,线程安全,效率低,增删慢,查找慢;

(4)Stack

Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。

2.Map接口

(1)HashMap

基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键;

(2)HashTable

线程安全,低效,不支持 null 值和 null 键;

(3)LinkedHashMap

是 HashMap 的一个子类,保存了记录的插入顺序;

(4)TreeMap 接口

TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序

3. Set接口

(1)HashSet

底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;

(2)LinkedHashSet

继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap

(3)TreeSet

TreeSet是二叉树实现的,基于TreeMap,生成一个总是处于排序状态的set,内部以TreeMap来实现,不允许放入null值。它是使用元素的自然顺序对元素进行排序,或者根据创建Set时提供的 Comparator 进行排序,具体取决于使用的构造方法。

 

三、总结

(1)List、Set都是继承自Collection接口,Map则不是

(2)List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)

(3)Set和List对比:

               Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

               List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

(4)Map适合储存键值对的数据

(5)线程安全集合类与非线程安全集合类 :

               LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;

               HashMap是非线程安全的,HashTable是线程安全的;

               StringBuilder是非线程安全的,StringBuffer是线程安全的。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页