Java中集合知识点

一、集合

集合总主要是三种:List,Set,Queue

  1. Collection:是集合List,Set,Queue的基本的接口。
  2. Iterator:迭代器,提供方法访问集合中的数据。
  3. Map :是映射表的基础接口。

二 、List集合

ArrayList集合的特点:

  1. 排列有序,可重复
ArrayList<String> list = new ArrayList<>();
        list.add("b");
        list.add("a");
        list.add("a");
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
  1. 底层使用数组
    private static final Object[] EMPTY_ELEMENTDATA = {};

    /**
     * Shared empty array instance used for default sized empty instances. We
     * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
     * first element is added.
     */
    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

    /**
     * The array buffer into which the elements of the ArrayList are stored.
     * The capacity of the ArrayList is the length of this array buffer. Any
     * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
     * will be expanded to DEFAULT_CAPACITY when the first element is added.
     */
    transient Object[] elementData; // non-private to simplify nested class access

  1. 速度快,增删慢

  2. 线程不安全

  3. 容量不够,ArrayList是当前容量*1.5+1

  private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        // minCapacity is usually close to size, so this is a win:
        elementData = Arrays.copyOf(elementData, newCapacity);
    }

Vector集合的特点:

  1. 排列有序,可重复
  2. 底层使用数组
  3. 速度快,增删慢
  4. 线程安全,效率低
  5. 容量不够,默认扩展一倍容量
   private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                         capacityIncrement : oldCapacity);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        elementData = Arrays.copyOf(elementData, newCapacity);
    }

LinkedList集合的特点

  1. 排列有序,可重复
  2. 底层使用双向循环表数据结构。
  3. 查询速度慢,增加和删除快
  4. 线程不安全。

三、Set 集合

HashSet集合的特点

  1. 排列无序,不可重复
  2. 底层使用hash表实现
  3. 存取速度快
  4. 内部是HashMap

TreeSet

  1. 排列无序,不可重复
  2. 底层使用二叉树实现
  3. 排序存储
  4. 内部是TreeMap和sortedSet

LinkedHashSet

  1. 采用hash表存储,并用双向链表记录插入顺序。
  2. 内部是LinkedHashMap。

Queue

在两端出入的List,可以使用数组和链表实现。

四、Map集合

1.HashMap集合的特点

  1. 键不可重复,值可以重复。
  2. 底层哈希表
  3. 线程不安全
  4. 允许key值为null,value也可以为空。
  5. capacity:当前数组容量,始终保持 2^n,可以扩容,扩容后数组大小为当前的 2 倍。
  6. loadFactor:负载因子,默认为 0.75。
  7. threshold:扩容的阈值,等于 capacity * loadFactor

Hashtable集合的特点

  1. 键不可重复,值可重复
  2. 底层哈希表
  3. 线程安全
  4. key value都不允许为空

TreeMap集合的特点

  1. 键不可重复,值可重复
  2. 底层二叉树。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java集合Java最重要的概念之一,主要用于存储和操作数据。Java集合框架提供了多种类型的集合,包括List、Set、Map等,每种类型的集合都有其自己的特点和用途。下面是Java集合的一些重要知识点: 1. 集合框架的接口体系:Java集合框架有多个接口,包括Collection、List、Set、Map等。它们之间的关系如下图所示: ![Java集合框架接口体系](https://img-blog.csdn.net/20180519145129679) 2. List:List是有序的集合,可以包含重复元素。常用的List实现类有ArrayList和LinkedList。 3. Set:Set是无序的集合,不包含重复元素。常用的Set实现类有HashSet和TreeSet。 4. Map:Map是一种键值对的映射表,其键和值可以是任意对象。常用的Map实现类有HashMap和TreeMap。 5. 迭代器:Java集合框架提供了迭代器来遍历集合的元素。迭代器可以按顺序访问集合的元素,并且支持删除操作。 6. 泛型:Java集合框架支持泛型,可以确保集合只包含特定类型的对象。 7. 自动装箱/拆箱:Java集合框架支持自动装箱和拆箱,可以将基本类型转换为对应的包装类型。 8. 并发集合Java集合框架还提供了一些并发集合,如ConcurrentHashMap和CopyOnWriteArrayList,用于多线程环境的安全访问。 下面是Java集合知识点的思维导图: ![Java集合知识点思维导图](https://img-blog.csdn.net/20180519145411787)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘同学要加油呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值