我有一个充满目标的 ObservableList。我不在乎原始列表的顺序是什么。我正在使用排序列表来处理排序。
对于这个特定的列表,我让比较器根据目标的大小级别进行排序。在第一种情况下,目标一 < 二。
现在,如果我通过原始列表或直接通过目标更改幅度,排序列表将不会自行排序。
但是,如果我使用排序列表中的 set() 方法,它会自行排序。没有其他方法可以设置字段并让排序列表自行排序吗?
我想对原始列表进行更改并让排序列表实现这一点。
ObservableList<Objective> list = FXCollections.observableArrayList();
Objective one = new Objective(), two = new Objective();
one.setMagnitude(10);
two.setMagnitude(5);
list.addAll(one, two);
SortedList<Objective> sorted = new SortedList<Objective>(list,
(Comparator<? super Objective>) (Objective x, Objective y) -> {
int first = x.getMagnitude();
int second = y.getMagnitude();
if (first > second)
return 1;
else if (second > first)
return -1;
else
return 0;
});
System.out.println("SortedList:" + sorted.toString());
list.get(0).setMagnitude(1);
list.get(1).setMagnitude(50);
System.out.println("SortedList:" + sorted.toString());
System.out.println("Source List:" + list.toString());
SortedList:[5, 10]
SortedList:[50, 1]
Source List:[1, 50]