JavaFX FliteredList未跟随基础列表的更改

JavaFX 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

我有一个整数数组列表(aList),然后从aList生成一个可观察列表(oList)。将0到10添加到列表中,然后制作一个筛选列表(fList)输出列表。最后,我给aList加了10个,给oList加了11个。我希望在fList中同时看到10和11,但令人惊讶的是,10不在fList中。这是预期的行为还是bug

    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,