学生类:由于是判断对象是否重复所以我们在学生类中必须重写equals方法和hashcode方法
最后要排序还得实现Comparable接口,重写compareTo方法。
import java.util.Objects;
public class Student implements Comparable<Student>{
private String name;
private int id;
private char sex;
public Student(String name, int id, char sex) {
this.name = name;
this.id = id;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
", sex=" + sex +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
sex == student.sex &&
name.equals(student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, id, sex);
}
@Override
public int compareTo(Student o) {
Student a=o;
if(this.id>a.id) return -1;
if(this.id<a.id) return 1;
return 0;
}
}
测试:LinkedHashSet集合要转变为TreeSet才能实现Iterator接口的遍历所以还要转变为TreeSet。
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.TreeSet;
/**
* 二.List中存放若干学生对象(学生有学号,姓名,性别等属性),去除List中重复的元素,并按学号降序输出。
* (请百度并利用LinkedHashSet集合,既不会重复,同时有可预测的顺序即输入顺序)
*/
public class Test7 {
public static void main(String[] args) {
LinkedHashSet linkedHashSet=new LinkedHashSet();
linkedHashSet.add(new Student("zhangsan",101,'M'));
linkedHashSet.add(new Student("zhangsan",101,'M'));
linkedHashSet.add(new Student("lisi",102,'F'));
linkedHashSet.add(new Student("wangmazi",108,'M'));
linkedHashSet.add(new Student("wangwu",104,'M'));
linkedHashSet.add(new Student("zhaoliu",106,'M'));
System.out.println(linkedHashSet.size());
TreeSet treeSet=new TreeSet(linkedHashSet);
Iterator iter=treeSet.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
}
}