Java collection与map常用集合大总结

来源:互联网 发布:linux怎么打包压缩文件 编辑:程序博客网 时间:2024/05/28 15:04
集合框架的描述:
为什么会出现这么多的集合容器呢?
因为每一个容器对数据的存储方式都不同。
这个存储方式称之为:数据结构。
collection
List:元素是有序的,元素可以重复。因为该集合体系有索引。特有方法,
凡是可以操作角标的方法都是该体系的特有方法。
List集合判断元素是否相同,依据的是元素的equals方法。
ArrayList : 底层的数据结构使用的是数组结构。特点:查询修改速度很快,
增删稍慢。(在元素多的情况下,元素少无所谓);线程不同步
。构造一个初始容量为10的空列表,如果不够用会自动延长百分之五十。
LinkedList : 底层使用的是链表数据结构。特点:增删的速度很快,查询修改的速度慢。
Vector :(JDK1.0)底层是数组数据结构。线程同步。被ArrayList替代了。
默认长度为10,如果不够用会自动延长百分之百。
Set : 元素是无需的,元素不可以重复。
HashSet : 底层数据结构是哈希表。线程是非同步的。
HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,是通过hashCode和equals来完成。
如果元素的hashCode值相同,才会判断equals是否为true。
如果元素的hashCode值不同,不会调用equals。
注意:对于判断元素是否存在,以及删除等操作,
依赖的方法是元素的hashCode和equals方法。
LinkedHashSet :
TreeSet : 可以对Set集合中的元素进行排序。
底层数据结构是二叉树。
保证元素唯一性的依据。
compareTo方法return 0。

TreeSet排序的第一种方式:让元素自身具备比较性。
元素要实现Comparable接口,覆盖CompareTo方法。
这种方式也称为元素的自然顺序,或者叫做默认顺序。

TreeSet的第二种排序方式:
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时候就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。


Map: 该集合存储键值对。一对一对往里村,而且要保证键的唯一性。
Map和Set很像,其实set集合底层都是用的map集合方法。
Hashtable :底层是哈希表数据结构,不可以存入null作为键/值出现。线程同步。
JDK1.0。(效率低)
HashMap : 底层是哈希表数据结构,并允许使用null作为键/值出现。线程不同步。
JDK1.2。(效率高)
LinkedHashMap :
TreeMap :底层是二叉树据结构。线程不同步,可以用于给map集合中的键进行排序。


1 1