基本介绍
Set接口是 Collection 接口的子接口
- 无序(添加和取出的顺序不一致),没有索引;
- 不允许重复元素,所以最多包含一个null;
常用方法
boolean add(E e); // 插入e元素
boolean contains(Object o); // 判断是否存在
Object[] toArray(); // 转成数组
boolean remove(Object o); // 移除指定元素
遍历
List set = new HashSet<>();
set.add(1);
set.add("张三");
// 1. 迭代器
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("================================================");
// 2. 增强for循环
for (Object o : list) {
System.out.println(o);
}
HashSet基本介绍
- HashSet底层是一个HashMap;
- 添加一个元素时,会显得到一个hash值=》转换层索引值;
- 找打存储数据表table,看这个索引位置是否已经存放元素;
- 如果没有,直接加入;
- 如果有,调用equals比较,如果相同就放弃添加,如果不相同则添加到最后;
- 在Java8中,如果一条链表的元素个数到
TREEIFY_THRESHOLD(8)
,并且table的大小>= MIN_TREEIFY_CAPACITY(64)
数据结构转为红黑树;
LinkedHashSet基本介绍
- LinkedHashSet是HashSet的一个子类;
- LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数据+双向链表;
- LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的;
- LinkedHashSet不允许重复添加元素;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78410.html