zoukankan      html  css  js  c++  java
  • Java数据结构-集合类

    List集合(ArrayList,Vector,LinkedList使用场景)和Set集合

    参考链接:

    java各种集合类区别  https://blog.csdn.net/qq_30711091/article/details/88847892
    Java 集合系列之四:Queue基本操作  https://www.cnblogs.com/haimishasha/p/10808906.html
    关于LinkedList的使用场景及优化 https://tieba.baidu.com/p/2777462369?red_tag=2828544283
    自定义jdbc连接池 https://www.cnblogs.com/ylfeiu/p/3621886.html

    基础集合接口分为:Collection和Map

    Collection集合有三个集合扩展:List、Set、Queue

    这个Collection集合接口常用的类

    Set, List, Map, SortedSet, SortedMap, HashSet, TreeSet, ArrayList, LinkedList, Vector, Collections, Arrays, AbstractCollection


    List: 元素可重复,有序(存入顺序1,2,3 遍历顺序1,2,3)

    常用的类:
    ArrayList:集合元素使用数组结构array,
    查询速度快,增删改查慢,数组可以下标访问任意元素,因此它的随机访问速度快
    
    LinkedList: 底层使用链表结构,增删速度快,查询速度慢

    Vector: 向量,底层数组结构array,与ArrayList相同,查询速度快,增删改慢。
    访问方法是加了
    synchronized同步关键字,是线程安全的

    Vector和ArrayList区别。

    默认时。数组长度超出最大容量时,
    Vector的增长率是100%,(newCapacity = oldCapacity + oldCapacity)
    而ArrayList增长率是50%(newCapacity = oldCapacity + (oldCapacity >> 1)) 右移移位相当于除以2

    Set: 元素不可重复,无序(存入顺序和遍历出来的数据顺序不一致)

    常用的类:
    HashSet: 允许有null值,拥有Set的特性,不是线程安全的

    Queue:不允许插入null元素(不具体展开)

    参考链接:https://www.cnblogs.com/haimishasha/p/10808906.html
    常用的Queue实现类是
    LinkedList,ArrayBlickingQueue, LinkedBlockingQueue,PriorityQueue, PriorityBlockingQueue

    网上很多关于ArrayList和LinkedList使用场景文章

    ArrayList会经常用到,但是LinkedList具体的使用场景比较少。

    这里给出一个LinkedList的具体使用场景:

    使用LinkedList来维护连接池
    连接池实际是用来存放链接对象的一个集合,当一个请求需要建立连接时
    从连接池中拿出任意一个连接对象并返回给请求放,
    请求放完成操作后将连接对象返回,并添加到连接池集合中
    连接池需要频繁的添加移除连接对象,而对于具体给请求放哪一个连接对象并不在乎,
    与LinkedList增删块,查询慢特性非常契合。

    Map集合类

    Map这个集合类可以看成key集合和value集合类的组合,即双列集合
    也可以看成特殊的集合,元素是:key-value键值对组成的元素对象
    key的集合类是实现Set接口
    
    所以Map的key值具有唯一性(互异性),无序

    HashMap:非线程安全的

    HashTable: 线程安全的,操作方法上加了synchronized关键字 (不允许使用null作为key和value,否则会引发异常,而HashMap可以)

    因为Map的key是Set集合,具有唯一性,和无序性。 遍历元素的顺序是不一致了

    作者:海绵般汲取
    出处:https://www.cnblogs.com/gne-hwz/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    [Javascript] 面向对象编程思想
    [Javascript] “||”和“&&”的灵活运用
    [Java] HashMap、TreeMap、Hashtable排序
    [Java] 多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)
    [Java] 集合类(List、Set、Map的基本使用)
    [Java] Map 集合类简介
    [Javascript,JSON] JQuery处理json与ajax返回JSON实例
    [PHP] Eclipse开发PHP环境配置
    nginx的 CPU参数worker_processes和worker_cpu_affinity使用说明
    【HTTP 2】启用 HTTP 2(Starting HTTP/2)
  • 原文地址:https://www.cnblogs.com/gne-hwz/p/14473378.html
Copyright © 2011-2022 走看看