集合

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):

  

原文地址:https://www.cnblogs.com/wongem/p/6705047.html