Anonymous
Должна ли перестановка в ObservableList генерировать добавленные и удаленные изменения в JavaFX?
Сообщение
Anonymous » 18 ноя 2025, 06:00
Я думал, что при перестановке в ObservableList добавленные и удаленные изменения не должны генерироваться. Однако вызов FXCollections.reverse() показал, что это не так. Это мой код:
Код: Выделить всё
public class Permutation {
public static void main(String[] args) {
test("FXCollections.reverse()", FXCollections::reverse);
test("sort(reverseOrder())", list -> list.sort(Comparator.reverseOrder()));
}
private static void test(String name, Consumer op) {
ObservableList list = FXCollections.observableArrayList(1, 2, 3);
list.addListener((ListChangeListener) change -> {
while (change.next())
System.out.printf("%s - Added: %s, Removed: %s, Permutated: %s%n",
name, change.wasAdded(), change.wasRemoved(), change.wasPermutated());
});
op.accept(list);
}
}
И вот результат:
Код: Выделить всё
FXCollections.reverse() - Added: true, Removed: true, Permutated: false
sort(reverseOrder()) - Added: false, Removed: false, Permutated: true
Скажите, пожалуйста, это ошибка или ожидаемое поведение?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... changes-in
1763434853
Anonymous
Я думал, что при перестановке в ObservableList добавленные и удаленные изменения не должны генерироваться. Однако вызов FXCollections.reverse() показал, что это не так. Это мой код: [code]public class Permutation { public static void main(String[] args) { test("FXCollections.reverse()", FXCollections::reverse); test("sort(reverseOrder())", list -> list.sort(Comparator.reverseOrder())); } private static void test(String name, Consumer op) { ObservableList list = FXCollections.observableArrayList(1, 2, 3); list.addListener((ListChangeListener) change -> { while (change.next()) System.out.printf("%s - Added: %s, Removed: %s, Permutated: %s%n", name, change.wasAdded(), change.wasRemoved(), change.wasPermutated()); }); op.accept(list); } } [/code] И вот результат: [code]FXCollections.reverse() - Added: true, Removed: true, Permutated: false sort(reverseOrder()) - Added: false, Removed: false, Permutated: true [/code] Скажите, пожалуйста, это ошибка или ожидаемое поведение? Подробнее здесь: [url]https://stackoverflow.com/questions/79822646/should-a-permutation-in-an-observablelist-generate-added-and-removed-changes-in[/url]