【数据结构】Set的使用与注意事项

简介: 【数据结构】Set的使用与注意事项

Set 的使用

SetMap 主要的不同有两点:Set 是继承自 Collection 的接口类,Set 中只存储了 Key

方法 解释
boolean add(E e) 添加元素,但重复元素不会被添加成功
void clear() 清空集合
boolean contains(Object o) 判断 o 是否在集合中
Iterator iterator() 返回迭代器
boolean remove(Object o) 删除集合中的 o
int size() 返回set中元素的个数
boolean isEmpty() 检测set是否为空,空返回true,否则返回false
Object[] toArray() 将set中的元素转换为数组返回
boolean containsAll(Collection c) 集合c中的元素是否在set中全部存在,是返回true,否则返回

false
boolean addAll(Collection c) 将集合c中的元素添加到set中,可以达到去重的效果

显示详细信息

add()

Set<String> set = new TreeSet<>();  
set.add("abc");  
set.add("hello");  
set.add("abc");  
System.out.println(set);
/*
[abc, hello]
*/
  • 可发现,set 中不能存储相同的元素

iterator()

通过迭代器返回集合

Set<String> set = new TreeSet<>();  
set.add("abc");  
set.add("hello");  
set.add("abc");  
  
Iterator<String> it =  set.iterator();  
while (it.hasNext()){  
    System.out.println(it.next());  
}
/*
abc
hello
*/
  • while 判断 it 是否还有下一个,有的话就打印,打印完后就到下一个

注意事项

  1. Set 是继承自 Collection 的一个接口类
  2. Set 中只存储了 key,并且要求 key 一定要唯一
  3. TreeSet 的底层是使用 Map 来实现的,其使用 keyObject 的一个默认对象作为键值对插入到 Map 中的
  4. Set 最大的功能就是对集合中的元素进行去重
  5. 实现 Set 接口的常用类有 TreeSetHashSet,还有一个 LinkedHashSetLinkedHashSet是在 HashSet 的基础上维护了一个双向链表来记录元素的插入次序。
  6. Set 中的 Key 不能修改,如果要修改,先将原来的删除掉,然后再重新插入
  7. TreeSet 中不能插入 nullkeyHashSet 可以
Set 底层结构 TreeSet HashSet
底层结构 红黑树 哈希桶
插入/删除/查找时间 复杂度 O ( l o g N ) O(logN) O(logN) O ( 1 ) O(1) O(1)
是否有序 关于Key有序 不一定有序
线程安全 不安全 不安全
插入/删除/查找区别 按照红黑树的特性来进行插入和删除 1. 先计算key哈希地址 2. 然后进行 插入和删除
比较与覆写 key必须能够比较,否则会抛出

ClassCastException异常
自定义类型需要覆写equals和

hashCode方法
应用场景 需要Key有序场景下 Key是否有序不关心,需要更高的 时间性能


相关文章
|
5月前
|
存储 索引 容器
数据结构之Map/Set讲解+硬核源码剖析(二)
数据结构之Map/Set讲解+硬核源码剖析(二)
68 0
|
12月前
|
存储 自然语言处理 安全
数据结构 - 7(Map和Set 15000字详解)
数据结构 - 7(Map和Set 15000字详解)
64048 16
|
12月前
|
存储 C++ 容器
|
25天前
|
存储 Java API
【数据结构】map&set详解
本文详细介绍了Java集合框架中的Set系列和Map系列集合。Set系列包括HashSet(哈希表实现,无序且元素唯一)、LinkedHashSet(保持插入顺序的HashSet)、TreeSet(红黑树实现,自动排序)。Map系列为双列集合,键值一一对应,键不可重复,值可重复。文章还介绍了HashMap、LinkedHashMap、TreeMap的具体实现与应用场景,并提供了面试题示例,如随机链表复制、宝石与石头、前K个高频单词等问题的解决方案。
25 6
【数据结构】map&set详解
|
2天前
|
存储 自然语言处理 安全
【数据结构】Map的使用与注意事项
【数据结构】Map的使用与注意事项
14 1
|
16天前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
5月前
|
存储 C++ 容器
[数据结构]-map和set
[数据结构]-map和set
|
5月前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-Set篇
Redis入门到通关之Redis数据结构-Set篇
72 1
|
5月前
|
存储 自然语言处理 Java
数据结构-Java Map 和 Set-2
数据结构-Java Map 和 Set
22 0
|
5月前
|
Java
数据结构-Java Map 和 Set-1
数据结构-Java Map 和 Set
40 0