(推荐教程:java入门教程)
java集合主要由两大体系构成,分别是:collection体系和map体系。其中collection体系和map体系分别是两大体系中的顶层接口。
collection主要有三个子接口,分别为list(列表)、set(集)、queue(列队)。
有序可重复:list、queue
无序不可重复:set
collection接口
一、list有序,可重复
1、arraylist
优点:底层数据结构是数组,查询快,增删慢。
缺点:线程不安全,但是效率高。
2、vector
优点:底层数据结构是数组,查询快,增删慢。
缺点:线程安全,效率低
3、linkedlist
优点:底层数据结构是数组,查询慢,增删块。
缺点:线程不安全,效率高
二、set无序,唯一
1、hashset
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
依赖两个方法:hashcode()和equals()
2、linkedhashset
底层数据结构是链表和哈希表。(fifo插入有序,唯一)
ⅰ.由链表保证元素有序
ⅱ.由哈希表保证元素唯一
3、treeset
底层数据结构是红黑树。(唯一,有序)
如何保证元素排序的呢?
自然排序、比较器排序。
如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定。
(视频教程推荐:java课程)
map接口
1、map接口有三个比较重要的实现类分别是:hashmap、treemap、hashtable。
2、有序:treemap。无序:hashmap、hashtable。
3、hashtable、hashmap的主要的区别:
hashtable的方法是同步的,hashmap的方法不是同步的。
4、hashtable是线程安全的,hashmap不是线程安全的。
5、hashmap效率较高,hashtable效率较低。
如果对同步性或与遗留代码的兼容性没有任何要求,建议使用hashmap。 查看hashtable的源代码就可以发现,除构造函数外,hashtable的所有 public 方法声明中都有 synchronized关键字,而hashmap的源码中则没有。
6、hashtable不允许null值,hashmap允许null值(key和value都允许)。
7、父类不同:hashtable的父类是dictionary,hashmap的父类是abstractmap。
以上就是collection接口与map接口概述的详细内容。