Java中set的基本操作


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));

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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦里有阳光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值