List&Set集合
发布日期:2021-05-14 16:55:58 浏览次数:16 分类:精选文章

本文共 944 字,大约阅读时间需要 3 分钟。

List Set集合

一、List(掌握)

有序可重复集合,是线程不安全的

(一)ArrayList

基于数组,查改快

ArrayList()是构造一个初始容量为10的空列表

(二)LinkedList

基于双向链表,增删插快

实现了List接口和Deque接口,如果想要具有某一个接口的特性,只使用需要的接口方法,尽量不要交叉使用多个接口的方法

(三)Vector

是一个线程安全的ArrayList

二、Set(掌握)

无序不可重复集合,是线程不安全的

(一)HashSet

基于HashMap,基于hashCode()

HashSet()是创建一个默认初始容量为16,负载因子0.75(负载因子设置大,扩容晚,效率低;负载因子设置小,扩容早,效率高)

判断重复机制

先判断当前元素和要添加元素的hashCode()是否相等,若相等再判断当前元素和要添加的元素equals()是否相等,若相等,则认为是两个相同的元素

(二)TreeSet

基于TreeMap,采用红黑树(特殊的二叉树,有自平衡机制,左小右大)

判断重复机制

1.自然排序

必须实现Comparable接口,重写CompareTo方法,JDK中接口默认排序为升序

2.定制排序

必须创建TreeSet对象时,将一个比较器Comparetor实现类(子类)对象传入,重写Compare()方法

返回值是正数:表示不同的元素升序

返回值是负数:表示不同的元素降序

返回值是0:表示相同的元素

定制排序的优先级高于自然排序

(三)LinkedHashSet

结合HashSet和链表特性,保证元素插入和取出的顺序

(四)最高效将List集合中元素去重的方式

通过调用HashSet(Collection collection)构造方法,将List中的元素去重并添加到HashSet中

三、集合的遍历

集合支持两种主要的遍历方式:foreach和迭代器(Iterator)

1. foreach循环:实现了Iterable接口,适合批量获取元素,但不支持随机访问

2. 单向迭代器:通过iterator()方法获取,但不能在遍历时对集合进行增删改操作

3. 双向迭代器:仅List支持,通过listIterator()方法获取

上一篇:Map&泛型
下一篇:数据结构

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年05月04日 09时04分51秒