Collections

发布时间 2023-12-20 21:42:16作者: Cyptals

JDK8.0对集合进行有优化 Collection 表示一组对象,这些对象也称为 collection 的元素。 | List : 元素可以重复 ; 保证插入顺序和取出顺序一致 | ArrayList : 数组结构 查询快,增删效率略低 线程不安全的 容量不够时,按自身的50%进行扩容 10 ---> 15 ---> 22 JDK8.0与7.0中 ArrayList的区别 ? JDK7.0 : 在使用空参构造器创建ArrayList对象时,直接开辟了 10个 空间,用来存储元素 JDK8.0 在使用 空参构造器创建ArrayList对象时,先创建的空数组,在使用 add函数添加第一个元素时,才开辟10个的空间 | Vector : 数组结构 线程安全 容量不够时,按自身的100%进行扩容 10 ---> 20 ---> 40 | LinkedList : 链表结构(双向链表) : 冰糖葫芦 线程不安全 查询慢,增删快 | Set : 元素唯一 ; 不保证插入顺序和取出顺序一致 | HashSet : 哈希表结构 线程不安全 | Hashtable : 哈希表结构 线程安全 | TreeSet : 二叉树结构 线程不安全 会对元素进行排序 注意 : 集合中的 contains 函数 , remove 函数 以及 indexOf , lastIndexOf 函数会根据集合中的元素的equals函数进行判断

Consumer : 消费型接口 : 有来无回 void accept(T t); Supplier : 供给型接口 : T get(); Function : 函数型接口 : 有来有往 R apply(T t); Predicate : 断言型接口 : 条件 boolean test(T t);

内部迭代 : 循环在底层 外部迭代 : 自己写循环

 

Collections : 集合的工具类 sort() Collection 表示一组对象,这些对象也称为 collection 的元素。 | List : 元素可以重复 ; 保证插入顺序和取出顺序一致 ; 序列/列表 | ArrayList : 数组结构 查询快,增删效率略低 线程不安全的 容量不够时,按自身的50%进行扩容 10 ---> 15 ---> 22 | Vector : 数组结构 线程安全 容量不够时,按自身的100%进行扩容 10 ---> 20 ---> 40 | LinkedList : 链表结构(双向链表) : 冰糖葫芦 线程不安全 查询慢,增删快

 

可变参数列表 : 1.本质就是数组 2.如果存在精确匹配,优先执行精确匹配 3.可变参数列表必须位于所有参数的后面

 

| Set : 元素唯一 ; 不保证插入顺序和取出顺序一致 | HashSet : 哈希表结构 线程不安全 唯一原则 : 先使用 元素 的 hashCode函数进行比较 , 如果不同,直接存储; 如果相同,则调用元素的 equals() 函数进行判断, 如果不同直接存储,相同舍弃 | LinkedHashSet : 哈希表 + 链表 保证插入顺序和取出顺序一致 | TreeSet : 二叉树结构 线程不安全 会对元素进行排序

 

TreeSet : 对元素进行排序 1.自然排序 : 要求 元素类型实现 Comparable<T> 接口 2.定制排序/自定义排序 : 创建TreeSet对象时需要提供 比较器对象(Comparator<T>) 注意 : 两种排序同时存在,优先按 定制排序进行排序