文章目录
- 1、定义Set
- 2、增删改操作
- (1)新增
- (2)删出
- (3)修改
- 3、访问set
- 4、遍历set
- (1)foreach遍历
- (2)iterator迭代器遍历
- 5、set转换
- 6、其他操作
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));
输出结果: