JavaFX FliteredList未跟随基础列表的更改
我有一个整数数组列表(aList),然后从aList生成一个可观察列表(oList)。将0到10添加到列表中,然后制作一个筛选列表(fList)输出列表。最后,我给aList加了10个,给oList加了11个。我希望在fList中同时看到10和11,但令人惊讶的是,10不在fList中。这是预期的行为还是bugJavaFX FliteredList未跟随基础列表的更改,javafx,observablelist,Javafx,Observablelist,我有一个整数数组列表(aList),然后从aList生成一个可观察列表(oList)。将0到10添加到列表中,然后制作一个筛选列表(fList)输出列表。最后,我给aList加了10个,给oList加了11个。我希望在fList中同时看到10和11,但令人惊讶的是,10不在fList中。这是预期的行为还是bug List<Integer> aList = new ArrayList<>(); ObservableList<Integer> oL
List<Integer> aList = new ArrayList<>();
ObservableList<Integer> oList = FXCollections.observableList(aList);
for (Integer i = 0; i < 10; i++)
aList.add(i);
FilteredList<Integer> fList = new FilteredList<Integer>(oList, i -> { return i > 5; });
aList.add(10);
oList.add(11);
System.out.print("O: ");
for (Integer i : oList)
System.out.print(i + ", ");
System.out.println("");
System.out.print("F: ");
for (Integer i : fList)
System.out.print(i + ", ");
System.out.println("");
这是预期的(或至少可以解释的)行为。报告说:
请注意,直接对基础列表进行的突变操作不会报告给任何封装该列表的ObservableList的观察者
FilteredList
的工作原理是观察其源列表(oList
),并在oList
的内容更改时更新其内容。由于没有发出通知说明oList
添加了值10
,因此筛选列表不会添加该值。感谢您的解释。
O: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
F: 6, 7, 8, 9, 11,