学习笔记 容器--collection--TreeSet类
三、TreeSet容器类
3.1、TreeSet是一个可以对元素进行排序的容器。底层实际使用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。
3.2、Tree内部需要对存储元素进行排序,因此我们要指定排序规则
3.3、因为实现了collection接口所以也继承相关的方法,如add()
3.4、排序规则实现方法
1)、通过元素自身实现比较规则。
Set<String> set=new TreeSet<>();//TreeSet的实例化
set.add("d");
set.add("c");
set.add("b");
set.add("a");
set.add("a"); //不支持输入重复的数
for (String st r: set)
/** 输出会按照英文字典排序,因为String类里面继承了
*接口Comparable<String>
*/
System.out.println(str);
2)、通过比较器指定比较规则。
我们需要创建一个比较器,比较器需要实现Comparator接口中的compare方法来实现比较规则
Set<User> set1=new TreeSet<>(); //因为User类是用户自己定义的类,所以只能用户自己在User类里实现Comparator接口中的compare方法来实现比较规则。
User u1=new User(1,"温迪");
User u2=new User(2,"神里绫人");
set1.add(u1);
set1.add(u2);
for (User str1:set1) //需要改写User类才能输出
System.out.println(str1);
public class User implements Comparable<User>{ //User继承Comparable<User>
@Override
public int compareTo(User o) { //compare方法
if (this.age<o.getAge())
return 1;
if (this.age==o.getAge()) //如果年龄相等的话
return this.name.compareTo(o.getName()); //compareTo是String自带的
return -1;
}
}
1%16 //当被除数小于除数时,商为0,余数为被除数本身 所以 ==1

浙公网安备 33010602011771号