当前位置: 首页 > 知识库问答 >
问题:

按值对ObservableList对象进行排序

璩涵衍
2023-03-14

我有一个班的学生有以下领域:

private int id;
private String firstName;
private String lastName;
private String imageLink;
private String email;
private String status;
private String fullName;
private int classId;  
private int percentage;
Button changeAttendanceButton;
ImageView attendanceImage;
ImageView photo;

字段“状态”可以有2个值:1。现在,2。缺席的

然后我有一个可观察的列表:

private ObservableList<Student> allStudentsWithStatus = FXCollections.observableArrayList();

因此,我将学生存储在这个列表中。每个学生都有出席或缺席状态。

我需要按状态对这个观察列表进行排序。我希望目前状态的学生在该列表中名列第一。

有什么建议吗?

如果有任何帮助,我将不胜感激。

共有1个答案

符懿轩
2023-03-14

1.您可以创建自定义比较器:

class StudentComparator implements Comparator<Student> {
  @Override
  public int compare(Student student1, Student student2) {
      return student1.getStatus()
               .compareTo(student2.getStatus());
  }
  //Override other methods...
}

或者像这样创造

Comparator<Student> studentComparator = Comparator.comparing(Student::getStatus);

然后使用一个:

ObservableList<Student> allStudentsWithStatus = ...
Collections.sort(allStudentsWithStatus, studentComparator);

或者像这样使用

allStudentsWithStatus.sort(studentComparator);

2.使用SortedList(javafx.collections.transformation.SortedList)

SortedList<Student> sortedStudents = new SortedList<>(allStudentsWithStatus, studentComparator);

3.使用流API和Comparator,如果您需要执行其他操作或需要收集到其他集合(最慢的方式):

allStudentsWithStatus.stream()
        .sorted(Comparator.comparing(i -> i.getStatus()))
        //other actions
        //.filter(student -> student.getLastName().equals("Иванов"))
        .collect(Collectors.toList());
        //.collect(Collectors.toSet());

 类似资料:
  • 问题内容: 如果我有一个JavaScript对象,例如: 有没有一种方法可以基于值对属性进行排序?这样我最终 问题答案: 将它们移动到一个数组,对该数组进行排序,然后将其用于您的目的。这是一个解决方案: 拥有数组后,您可以按自己喜欢的顺序从数组中重建对象,从而完全实现了您打算要做的事情。在我所知道的所有浏览器中都可以使用,但这取决于实现的怪癖,并且可能随时中断。您永远不应假设JavaScript对

  • 当我对它进行降序排序时,它应该首先显示Parent3,因为它有一个Z。这是我当前的hql,它得到了1>2>3的错误结果: 如果没有distinct,尽管它选择了多个相同的父级,但它仍然很好。 我有一个模型设置如下: 编辑:在集合中按HQL顺序对其进行排序,尽管当双亲具有相同的children.name值时,它不会比较下一个可能的值。即。 如果Parent1有孩子abba,zeon Parent2有

  • 问题内容: 我已经使用AJAX获得了以下对象并将它们存储在数组中: 如何仅使用JavaScript 创建一个函数以按属性 升序 或 降序 对对象进行排序? 问题答案: 按价格升序对房屋进行排序: 或在ES6版本之后:

  • 问题内容: 我需要通过PHP脚本中的“得分”值对此类信息进行排序,该怎么办?: PS:这已经在PHP值中,我已经使用了json_decode。* 问题答案: 当这个样子的: 您可以用来对数组进行排序: 输出:

  • 问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。

  • 问题内容: 我有一个带有几个键值对的对象数组,我需要根据’updated_at’对它们进行排序: 这样做最有效的方法是什么? 问题答案: 您可以使用。 这是一个例子: