collection集合详解
一:java集合的体系结构如下:
collection: list和set继承自collection接口。
|--list:
|--arraylist
|--vector
|--linkedlist
|--set:
|--hashset
|--treeset
|--linkedhashset
|--queue: 队列集合,有priorityqueue类
list:有序且允许元素重复。arraylist、linkedlist和vector是三个主要的实现类。
set:不允许元素重复。hashset和treeset是两个主要的实现类。
map:也属于集合系统,前两个继承至collection接口,map为独立接口。map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。hashmap、hashtable,treemap,linkedhashmap前三个主要的实现类。
- treemap是有序的,hashmap和hashtable是无序的。
- hashtable的方法是同步的,hashmap的方法不是同步的。这是两者最主要的区别。
collection的功能概述:
a:添加功能:boolean add(e e)确保此 collection 包含指定的元素(可选操作)。
b:删除功能:boolean remove(object o)从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
c:判断功能:
boolean isempty()如果此 collection 不包含元素,则返回 true。
boolean contains(object o)如果此 collection 包含指定的元素,则返回 true
d:获取功能:iterator<e> iterator()返回在此 collection 的元素上进行迭代的迭代器。
e:长度功能:int size()返回此 collection 中的元素数。
f:交集(了解):boolean retainall(collection<?> c)仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
g:把集合转数组(了解):object[] toarray()返回包含此 collection 中所有元素的数组。
— list 有序,可重复
arraylist
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
linkedlist
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
—set 无序,唯一
hashset
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashcode()和equals()
linkedhashset
底层数据结构是链表和哈希表。(fifo插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一
treeset
底层数据结构是红黑树。(唯一,有序)
1. 如何保证元素排序的呢?
自然排序
比较器排序
2.如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
上一篇: js中比较两个对象是否相同的方法示例