1.散列集(Hash Set):
a.链表和数组可以按照人们医院排列元素的次序,但是查找一个不清楚位置的指定元素时,就会消耗很多时间。所以如果不注重元素顺序,有几种可以快速查找元素的数据结构,它们按照有利于其操作目的的原则组织数据。其中之一就是散列表。
b.散列表为每一个对象计算一个整数,叫散列码(hash code)。散列码是由对象的实例域产生的,不同的数据域的对象将产生不同的散列码。
c.单列马需要快速的计算出来,并且只与要散裂的对象状态有关,与散列表中其他对象无关。
d.散列表用链表数组实现。每个列表称为桶(bucket)。散列码与桶的总数取余,结果就是保存这个元素的索引。当插入式,如果该桶中没满,就插入即可。如果满了(散列冲突),就查看是否存在。如果散列码是合理且随机分布的,桶的数目也足够大,需要比较的次数也很少。指定一个初始桶数(桶数是指用于收集具有相同散列值的桶的数目)。0.75是一个合适的装载因子。
HashSet():构造空的散列表。
HashSet(Collection<? extends E> elements):构造一个散列集,并将集合元素添加到这个散列集中。
HashSet(int initialCapacity):指定容量(桶数)
HashSet(int initialCapacity,float loadFactor)指定容量和装填因子(0.0~0.1)
2.树集(Tree Sets)
a.添加元素比散列表慢,比数组和链表快。如果树中包含n个元素,查找新元素位置平均需要log2n次比较。
TreeSet();
TreeSet(Collection<? wxtends E> elements);
3.队列和双端队列(Queue 和Deques):
a.ArrayDeque和LinkedList类实现了Deque接口。
boolean add(E element)
boolean offer(E element)
添加元素到队列,如果队列满了,add抛IllegalStateException。offer返回false。
E remove()
E poll()
删除并返回队头元素,如果为空,remove抛NoSuchElementException,poll返回null。
E element()
E peek()
返回队头元素,如果为空,element抛NoSuchElementException,peek返回null。
4.优先级队列(Priority Queue):(典型事例:任务调度)
a.按照排序的方式检索。无论何时调用remove方法,总会获得当前优先级嘟列中最小的元素。优先级队列使用了一个优雅且高效的数据结构,称为堆。堆是一种可以自我调整的二叉树,对树执行添加和删除操作,可以让最小的元素移动到根,而不必花费时间对元素进行排序。
5.映射表(Map):键值对
a.HashMap和TreeMap两个通用的实现,两个类都实现了Map接口。
***如果对同一个键调用两次put方法,第二个值就会取代第一个值,返回值就是第一个值。(例:put(1,2);put(1,3);那么map中存储(1,3),put(1,3)的返回值是2)
***使用get时,如果没有对应的键,那么返回null,通过使用get(id,0)可以使得在没有该id的键时,返回0.
b.有3个视图,键集,值集合和键/值对集。
Set<K> ketSet():ketSet既不是HashSet,也不是TreeSet,而是实现了Set接口的某个其他类的对象。
Collection<K> values()
Set<Map.Entry<K,V>> entrySet()
c.Map的方法:
default V merge(K key,V value,BiFunction<? super V,? extends V> remappingFunction):如果,value不为null,提供v和value的方法,如果结果为null,删除key,否则返回get(key)。
default V compute(K key,BiFunction<? super K,? super V,? extends V> remappingFunction):
default V computeIfPresent(K key,BiFunction<? super K,? super V,? extends V> remappingFunction):
default V computeIfAbsent(K key,BiFunction<? super K,extends V> mappingFunction):
default void replaceAll(K key,BiFunction<? super K,? super V,? extends V> remappingFunction):
6.弱散列映射集(WeakHashMap):