Set接口里面的集合,所存储的元素就是不重复的。
Hashset可查重,使用Hashset自定义泛型时,可在泛型类中添加equals()和hashCode()自动生成方法,实现相等的元素查重;
TreeSet可排序,使用TreeSet自定义泛型时,即可在泛型类中实现接口自动添加实现方法:
@Override
public int compareTo(Day3_test4 o) {
return o.getName().equals(this.getName())?0:this.getAge()-o.getAge();
}
返回值0实现查重,为1可不查重,返回的差值为排序方式。
也可在创建TreeSet时添加比较器:
Setsets=new TreeSet<>(new Comparator() {
@Override
public int compare(Day3_test4 o1, Day3_test4 o2) {
return o1.getName().equals(o2.getName())?0:o1.getAge()-o2.getAge();
}
});
同样返回值0实现查重,为1可不查重,o1-o2为正序排列,反之为倒序排列。
使用Treeset创建自定义集合,根据学生总分排序:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Set<Vocjd3> sets = new TreeSet<>(new Comparator<Vocjd3>() {
@Override
public int compare(Vocjd3 o1, Vocjd3 o2) {
return o1.getName().equals(o2.getName()) ? 0 : o2.getzof() - o1.getzof();
}
});
for (int i = 0; i < 3; i++) {
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入语文成绩:");
int yuwen = Integer.parseInt(scanner.nextLine());
System.out.print("请输入数学成绩:");
int shuxue = Integer.parseInt(scanner.nextLine());
System.out.print("请输入英语成绩:");
int yingyu = Integer.parseInt(scanner.nextLine());
sets.add(new Vocjd3(name, yuwen, shuxue, yingyu));
}
for (Vocjd3 set : sets) {
System.out.println(set);
}
}