gpt4 book ai didi

java - 如何重用成员对象的比较器

转载 作者:行者123 更新时间:2023-11-29 03:32:03 25 4
gpt4 key购买 nike

如果有一个定义了相应比较器的StudentUnion类,当它成为Student类的成员对象时,想要在集合中排序相同的因素(按学生会排序),那么如何避免重新编码另一个几乎与 StudentUnionComparator 做同样工作的比较器?这种情况有没有最好的设计?

public class Student{
....
private StudentUnion;
....
}

public class StudentUnionComparator implements Comparator<StudentUnion>{
public int compare(StudentUnion s1, StudentUnion s2){
....
return result // 1 or 0;
}
}

最佳答案

使StudentUnion实现Comparable:

public class StudentUnion implements Comparable<StudentUnion> {

public int compareTo(StudentUnion s) {
....
return result // 1 or 0;
}
}

然后让 Student 也实现 Comparable,首先使用 StudentUnion,然后再使用一些其他属性,以防 StudnetUnion 比较相同:

public class Student implements Comparable<Student> {
public int compareTo(Student s) {
int result = studentUnion.compareTo(s.studentUnion);
if (result != 0)
return result;
// use another field like name to break ties on StudentUnion
return name.compareTo(name);
}
}

关于java - 如何重用成员对象的比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17679939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com