Collection和Map集合学习小结(一)

来源:互联网 发布:sqlserver的安装 编辑:程序博客网 时间:2024/04/28 02:44

这几天学习了Collection集合和Map集合中的部分内容,Collection集合之下分了若干子接口,我主要学习List和Set集合,在其下又分了几个类,我主要学习了ArrayList和LinkedList,在Set集合中我主要学习了HashSet和TreeSet.在Map集合中我主要学习TreeMap和HashMap.

Collection:单列集合  Map:双列集合

List:有序(怎么样存进去再怎么样取出来),可重复(可以多次存入同一元素) 

ArrayList:底层数据结构为数组,查询快增删慢,线程不安全所以效率高

LinkedList::底层数据结构为链表,查询慢增删快,线程不安全所以效率高

Vector:底层数据结构为数组,查询快增删慢,线程安全所以效率低

Set:无序(存入和取出顺序没有联系),不可重复

HashSet:底层数据结是哈希表,它主要依靠两个方法hashCode()和equals();首先判断元素的哈希值是否相同,如果相同,再调用equals方法,确定是否为同一元素。

LinkedHashSet::底层数据结构由链表和哈希表组成,由链表保证元素有序(怎么样输入怎样取出),由哈希表保证元素唯一。

TreeSet::底层数据结构是红黑树(一种自平衡的二叉树)。根据返回值是否为0来保证元素唯一,可通过两种方法实现元素排序:1、让元素所属的类实现Comparable接口2、让TreeSet集合接受一个Comparator的对象。

Map集合:

1、其底层数据结构可与上面分别进行对应

2、Map集合的数据结构仅对键有效而与值无关

3、Map集合中存储的是键值对形式的元素,键唯一,值可重复

HashMap

LinkedHashMap

TreeMap


如何选择我们需要的集合类型?根据实际情况

是否是键值对类型?

是:Map集合   键是否需要排序?

是:TreeMap

否:HashMap

如果不确定则一般选用HashMap集合

否:Collection集合   是否需要保证元素唯一?

是:Set集合  元素是否需要排序?

是:TreeSet

否:HashSet

如果不确定则一般选用HashSet集合

否:List集合  增删多还是查询多?

增删多:LinkedList

查询多:ArrayList

不确定就用ArrayList


原创粉丝点击