Java中set的基本操作

文章详细介绍了Java中Set集合的定义、操作,包括如何新增、删除和遍历元素,以及Set与其它数据结构如ArrayList的转换方法。同时,文章提到了Set的无序性、不允许重复元素的特性,并展示了使用foreach和iterator遍历Set的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


set是一个无序的集合,没有下标,且set中不能有重复的元素,一般使用的set为HasSset。

1、定义Set

定义set时,存储类型必须是类类型。例如基本数据类型int没有属性和方法,其对应的类类型Integer,也称作int的包装类型,实现了整数的属性和方法。Integer对应就是java将int实现为一个类,并且对它赋予了方法和属性的对应类。

//定义一个set,默认使用HashSet<>()
Set<Integer> set1 = new HashSet<>();
Set<int> set2=new HashSet<>();//不是类类型,所以会报错
Set<String> set3 = new HashSet<>();

2、增删改操作

(1)新增

加入set的元素必须是声明时指定的类型元素。新增主要使用add方法,set可以去重,添加重复的元素,set中只有一个。addAll可以将set或list添加到新的set中。

settest.add(1);
settest.add(2);
settest.add(44);
settest.add(44); //set存储的时候,没有下标,但set可以去重
System.out.println(settest);//输出结果是[1, 2, 44]

// 新定义一个set,将set、list添加到新的set中
Set<Integer> settest2 = new HashSet<>();
ArrayList<Integer> lista = new ArrayList<Integer>();
settest2.addAll(lista);
settest2.addAll(settest);

(2)删出

//删除元素44
settest.remove(44);
//删除set中的所有元素
settest.clear();

(3)修改

由于set没有下标,所以没法对其数据进行修改。

3、访问set

java可以直接输出set中的内容,size方法可以获取到列表的长度。

System.out.println(settest);
System.out.println(settest.size());

输出结果为:
在这里插入图片描述

4、遍历set

set中没有下标,因此不能用普通for循环遍历下标。

(1)foreach遍历

// Integer类型,可以自动转换为int
for (int x : settest) {
	x += 6;
	System.out.println(x);
}
// 取出set中的值进行操作,并不影响set原有值。
System.out.println(settest);

(2)iterator迭代器遍历

// 声明set的迭代器
Iterator<Integer> sit = settest.iterator();
// 如果取值的次数超过了set中元素个数,会报错 java.util.NoSuchElementException
for (int times = 0; times < 3; times++) {
	// 为了避免异常取值,所以在取值之前,先判断是否有下个值
	if (sit.hasNext()) {
		int si = sit.next();
		System.out.println(si);
	}
}
// 优化后得到
while (sit.hasNext()) {
	int si = sit.next();
	System.out.println(si);
}

5、set转换

set可以通过对应方法直接转为数组或字符串。toArray将 set 转换为数组;toString将 set转换为字符串。

// set转换数组
Object[] listset=new Object[2];
istset=settest.toArray();
// 遍历数组
for(Object a:listset) {
		System.out.print(a);
	}
// 输出转换后的字符串
System.out.println(settest.toString());

6、其他操作

sEmpty方法------判断 arraylist 是否为空;
contains方法------判断元素是否在 arraylist;

System.out.println(settest.isEmpty());
System.out.println(settest.contains(2));

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里有阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值