gpt4 book ai didi

java - 如何按私有(private)字段对列表进行排序?

转载 作者:IT老高 更新时间:2023-10-28 20:55:16 25 4
gpt4 key购买 nike

我的实体类如下所示:

public class Student {

private int grade;

// other fields and methods
}

我就是这样使用它的:

List<Student> students = ...;

考虑到它是私有(private)字段,如何按 gradestudents 进行排序?

最佳答案

您有以下选择:

  1. 使 grade 可见
  2. grade
  3. 定义一个 getter 方法
  4. 定义一个Comparator inside Student
  5. Student实现Comparable
  6. 使用反射(在我看来这不是一个解决方案,它是一个解决方法/hack)

解决方案示例3:

public class Student {
private int grade;

public static Comparator<Student> byGrade = Comparator.comparing(s -> s.grade);
}

并像这样使用它:

List<Student> students = Arrays.asList(student2, student3, student1);
students.sort(Student.byGrade);
System.out.println(students);

这是我最喜欢的解决方案,因为:

  • 你可以轻松定义几个Comparators
  • 代码不多
  • 您的字段保持私有(private)和封装

解决方案示例4:

public class Student implements Comparable {
private int grade;

@Override
public int compareTo(Object other) {
if (other instanceof Student) {
return Integer.compare(this.grade, ((Student) other).grade);
}
return -1;
}
}

您可以像这样对任何地方进行排序:

List<Student> students = Arrays.asList(student2, student3, student1);
Collections.sort(students);
System.out.println(students);

此解决方案的方面:

  • 这定义了,按grade排序代表学生的自然顺序
  • 一些预先存在的方法会自动排序(如 TreeMap)

关于java - 如何按私有(private)字段对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52149721/

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