zoukankan      html  css  js  c++  java
  • List和set

    1、List插入有序,元素可以重复。Set插入无序,元素不可以重复。

    例如:先有1,1,2,3需要分别使用list跟set容器进行存储。那么list容器将会将以上全部进行存储到容器中,且按加入容器的的顺序进行存放。而set进行存储的时候只会存储1,2,3。且打印出来也不一定会按加入的顺序进行排序。

    2、List集合常用子类

    •   ArrayList:1)、底层数据结构由数组构成。

              2)、线程不安全。

              3)、扩容增量:容器不够装需要自动扩容,每次会按1.5被进行扩容。默认初始化容量为10。适用于查询。如:原来容量为10,一次扩容后为15。

              4)、删除元素时不会自动减少容量,若想对集合容量减少则调⽤trimToSize()。

    •   LinkedList:1)、底层数据结构由数组构成。

               2)、线程不安全。

               3)、适用于对容器数据的增删改。

    •   Vector:1)、底层数据结构由数组构成。

              2)、线程安全。

              3)、扩容增量:容器不够装需要自动扩容,每次会按2倍被进行扩容。默认初始化容量为10。如:原来容量为10,一次扩容后为20。

             4)、因为线程同步,可避免同时写而引起的数据不一致,但是由于同步也会导致访问比ArrayList慢。

      PS:如果想让ArrayList也进行线程同步,那么可以做以下操作。

    //需进行同步的集合
    List<Object> list = new ArrayList();
    List syncList=Collections.synchronizedList(list); 

    3、Set集合常用子类

    • HashSet:1)、底层结构是哈希表(是一个元素为链表的数组)

            2)、加载因子为0.75:即当容器内 元素个数 超过 容量长度的0.75倍 时,进行扩容

            3)、扩容增量:原容量的 1 倍。默认容量为16。如:原来容量为16,一次扩容后为32。

    • TreeSet: 1)、底层数据结构是红⿊树(是⼀个⾃平衡的⼆叉树)

            2)、排序有序。

    • LinkedHashSe:底层数据结构由哈希表和链表组成。
  • 相关阅读:
    python --异常处理
    Python -- 函数对象
    python --循环对象
    python --循环设计
    python --模块
    python --文本文件的输入输出
    xpee.vbs
    oracle 有个xe版本
    POI对Excel单元格进行颜色设置
    POI进行ExcelSheet的拷贝
  • 原文地址:https://www.cnblogs.com/buzheng/p/12564780.html
Copyright © 2011-2022 走看看