👵Set接口
特点:
Set:无序,不重复(无序:存入和拿出来的顺序不同所以不能使用下标)
遍历:
foreach,迭代器
扩容:
初始容量16,负载因子0.75,扩容增量1倍
实现:
对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,我们应该为保存到 HashSet 中的对象覆盖 hashCode() 和 equals()
已知实现接口有:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
已知子类:
JobStateReasons, LinkedHashSet
1.HashSet 🍨🍨
特点:
它存储唯一元素并允许空值 依据对象的hashcode来确定该元素是否存在
由HashMap支持
不保持插入顺序
非线程安全
性能参数:初始容量,负载因子 默认值: 初始容量16,负载因子0.75
示例:new HashSet<>(20, 0.5f);
思考:
1. 如何给ArrayList集合去重
2. set有ArrayList中存在的通过下标删除,或foreach循环删除时的问题吗? 为什么
3. set是否存在List删除,传入整数需要区分是基本型还是对象型的问题,【例如:list.remove(2)】,为什么?
4. HashSet是如何实现的?
代码运用:
如何把ArrayList中重复的元素去掉(去重),方法有很多