在Java集合框架中,`Set`接口是一个重要的接口,它表示一个不包含重复元素的集合。常见的`Set`实现类有`HashSet`、`LinkedHashSet`和`TreeSet`。下面是关于`Set`接口的一些基本用法和方法介绍:
常用实现类
HashSet:
- 基于哈希表实现,元素无序。
- 插入、删除、查找操作的时间复杂度为O(1)。
LinkedHashSet:
- 继承自
HashSet,并使用双向链表来维护元素的插入顺序。 - 保留元素的插入顺序。
- 继承自
TreeSet:
- 基于红黑树实现,元素有序。
- 插入、删除、查找操作的时间复杂度为O(log n)。
- 默认按自然顺序排序,或者可以提供一个
Comparator。
Set接口常用方法
以下是Set接口中一些常用的方法及其使用示例:
添加元素
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // 试图添加重复元素,不会添加成功
删除元素
set.remove("banana");
检查元素
boolean containsApple = set.contains("apple");
boolean containsBanana = set.contains("banana");
获取集合大小
int size = set.size(); // 获取集合中元素的个数
遍历集合
使用增强for循环:
for (String item : set) {
System.out.println(item);
}
使用迭代器:
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
清空集合
set.clear(); // 清空集合
判断集合是否为空
boolean isEmpty = set.isEmpty();
Set操作示例
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
// HashSet示例
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");
System.out.println("HashSet: " + hashSet);
// LinkedHashSet示例
Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("apple");
linkedHashSet.add("banana");
linkedHashSet.add("orange");
System.out.println("LinkedHashSet: " + linkedHashSet);
// TreeSet示例
Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("orange");
System.out.println("TreeSet: " + treeSet);
}
}
在这个示例中,HashSet显示无序集合,LinkedHashSet保留插入顺序,而TreeSet按自然顺序(字典顺序)排序。
总结
Set接口用于存储不重复的元素。- 主要实现类有
HashSet、LinkedHashSet和TreeSet,它们分别在性能和排序上有所不同。 - 通过常用的方法如
add、remove、contains、size等可以对集合进行基本操作。
通过这些方法和示例,可以帮助你更好地理解和使用Java中的Set集合。
在Java集合框架中,`Set`接口是一个重要的接口,它表示一个不包含重复元素的集合。常见的`Set`实现类有`HashSet`、`LinkedHashSet`和`TreeSet`。下面是关于`Set`接口的一些基本用法和方法介绍:的更多相关文章
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 第49节:Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中的快速失败(fail—fast)机制
fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...
- 从n个元素中选择k个的所有组合(包含重复元素)
LeetCode:Combinations这篇博客中给出了不包含重复元素求组合的5种解法.我们在这些解法的基础上修改以支持包含重复元素的情况.对于这种情况,首先肯定要对数组排序,以下不再强调 修改算法 ...
- JS 验证数组中是否包含重复元素
验证JS中是否包含重复元素,有重复返回true:否则返回false 方案一. function isRepeat(data) { var hash = {}; for (var i in data) ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合框架中List接口的简单使用
Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...
- Java 之集合框架 中(10)
Map和HashMap Map接口: Map 提供了一种映射关系,其中的元素是以键值对(Key-Value)的形式 存储的,能够实现根据Key快速查找value Map中的键值对以Entry类型的对象 ...
- Java集合框架中的元素
之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...
随机推荐
- ABAP配置:OY01 定义国家/地区
配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...
- selenium学习-常用方法
id_#当前元素的ID tag_name#获取元素标签名的属性 text#获取该元素的文本. click()#单击(点击)元素 submit()#提交表单 clear()#清除一个文本输入元 ...
- Pycharm:鼠标滚动控制字体大小
Pycharm字体放大的设置 1.File -> setting -> Keymap ->在搜寻框中输入:increase -> Increase Font Size(双击) ...
- java注释转json插件开发实战
目的 将java的代码注释转换为json格式,并写入文件 本文介绍了完整的开发流程及如何使用 运行环境 jdk1.8 maven3.x 设计思想 系统构思 编译完成的class里没有注释的,所以注释信 ...
- LeetCode 力扣 205. 同构字符串
给定两个字符串 s 和 t ,判断它们是否是同构的. 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的. 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序.不同字 ...
- java中的ArrayBlockingQueue
ArrayBlockingQueue ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个线程安全的阻塞队列实现. 它基于数组实现,容量固 ...
- 在SOUI中将自定义配置信息写到布局文件中
SOUI的布局XML文件保存布局必须的信息.特定场合中,用户可能会需要在布局中指定业务需要处理的属性. 比如启程输入法的皮肤.有的皮肤支持高分屏,有的皮肤不支持.对于这个场景,比较理想的方案是直接在皮 ...
- Rocksdb原理简介
本文分享自天翼云开发者社区<Rocksdb原理简介>,作者:l****n Rocksdb作为当下nosql中性能的代表被各个存储组件(mysql.tikv.pmdk.bluestore)作 ...
- 浅谈基于SASE的安全云服务
本文分享自天翼云开发者社区<浅谈基于SASE的安全云服务>,作者:姚****亮 SASE(secure access service edge安全访问服务边缘):是一种安全框架,结合了软件 ...
- mybatis之日志配置
1.在mybatis-config.xml中配置 <!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找. SLF4J | LOG4J | LOG4J2 | JDK_LOGGIN ...