第五章:集合03

第三章:集合03

一:Collection下的List和Set接口

1. 框架结构

在这里插入图片描述

2. List接口

在这里插入图片描述

  1. List存储元素的特点:有序且可重复(重复:集合中的元素可以重复,有序:存储进去的顺序和取出的顺序相同)

  2. 已实现的类。
    (1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素,默认初始化容量10(底层先创建一个长度为0的数组,当添加第一个元素的时候,初始化容量10),每次扩容为原集合的1.5倍(注意源码)。
    (2)LinkedList 底层数据结构是双向链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。
    (3)Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素,初始化容量10,每次扩容为原容量的2倍。

  3. 如何将一个线程不安全的集合转换为一个线程安全的

    使用集合工具类:
        java.util.Collections;
        java.util.Collection; 集合接口
        java.util.Collections; 集合工具类
    
    public class VectorTest01 {
          
          
        public static void main(String[] args) {
          
          
            //创建一个Vector集合
            Vector vector = new Vector();
            //添加元素
            //默认容量是10
            vector.add(1);
            vector.add(2);
            vector.add(3);
            vector.add(4);
            vector.add(5);
            vector.add(6);
            vector.add(7);
            vector.add(8);
            vector.add(9);
            vector.add(10);
            vector.add(11);
    
           //如何使用线程安全
           List mylist = new ArrayList();
           Collections.synchronizedList(mylist);//这样就是线程安全了
    
           mylist.add("111");
           mylist.add("222");
           mylist.add("3333");
        }
    }
    
    

3. Set接口

  1. List存储元素的特点:无序且不重复(重复:集合中的元素不可以重复,无序:存储进去的顺序和取出的顺序不相同)
  2. 主要实现的类:
    (1)HashSet:底层数据结构是哈希表(数组加链表(当链表长度超过8时自动转换成红黑树,当长度低于6是时自动转换成单向链表))****,初始容量16,每次扩容倍数为 2倍 。且底层实现是用HashMap存储方式,只不过是将值存储在HashMap中的key上面。
    (2)TreeSet 底层数据结构是自平衡二叉树,且底层实现也是用的HashMap集合,初始化容量16,每次扩容倍数为 2倍 。

3. Collection下的集合选取方式

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_28384023/article/details/109690874
今日推荐