概述:Set集合也是一个接口,继承自Collection,与List类似,都需要通过实现来操作
特点:
1.不允许有重复的元素
2.没有索引,所以不可以使用普通的for循环进行遍历
package com.pj.set;
import java.util.HashSet;
import java.util.Set;
/**
* @author pj_hxj
* @Description:
*/
public class Demo01 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("王五");
set.add("赵六");
//HashSet集合对数据的读写顺序不做保证
System.out.println(set);//[李四, 张三, 王五, 赵六]
//添加重复的元素时虽然不会报错,但是也无法成功存入
set.add("王五");
System.out.println(set);//[李四, 张三, 王五, 赵六]
}
}
TreeSet
特点:
有序元素的存储集合,有序指的是逻辑顺序
TreeSet():自然排序规则,默认的规则
TrssSet(Comparator com):自定义排序规则
TreeSet()
package com.pj.set;
import java.util.TreeSet;
/**
* @author pj_hxj
* @Description:
*/
public class Demo02 {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(55);
treeSet.add(33);
treeSet.add(44);
treeSet.add(11);
treeSet.add(22);
System.out.println(treeSet);//[11, 22, 33, 44, 55],默认的排序规则
}
}
TrssSet(Comparator com)
package com.pj.set;
import java.util.Comparator;
import java.util.TreeSet;
/**
* @author pj_hxj
* @Description:
*/
public class Demo03 {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// return 0;//[55]当返回值等于0时,表示后边的元素与第一个相同,因此只存入第一个元素
// return 1;//[55, 33, 44, 11, 22],当返回值大于0时,表示后边的元素都比前边的大,所以都放到后边
// return -1;//[22, 11, 44, 33, 55],当返回值小于0时,表示后边的元素都比前边的小,所以都放在前边
// return o1-o2;//[11, 22, 33, 44, 55],升序排序
return o2-o1;//[55, 44, 33, 22, 11],降序排序
}
});
treeSet.add(55);
treeSet.add(33);
treeSet.add(44);
treeSet.add(11);
treeSet.add(22);
System.out.println(treeSet);
}
}