
本文共 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()方法获取
发表评论
最新留言
关于作者
