• 集合


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

      

  • 相关阅读:
    selenium iframe切换
    roboframework环境搭建与使用
    ServHa双机热备简单配置
    linux搭建java ee开发环境
    FPGA学习笔记(五)—— 组合逻辑电路设计
    FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
    FPGA学习笔记(一)——初识FPGA
    FPGA学习笔记(二)——FPGA学习路线及开发流程
    【js重学系列】异步编程
    【js重学系列】作用域
  • 原文地址:https://www.cnblogs.com/wongem/p/6705047.html
Copyright © 2020-2023  润新知