如何在java中混洗FilteredList?

时间:2017-05-31 07:22:40

标签: java javafx java-8 javafx-8

当我想要随机播放FilteredList时,我会收到java.lang.UnsupportedOperationException

如何处理?

代码:

FilteredList<Card> filteredData = 
    new FilteredList(ob, filterByOption(option.get("selectedCard"), option.get("chapter")));

if (option.get("cardOrder") == "shuffle") {
    filterCards=filteredData;
    FXCollections.shuffle(filterCards);
}

1 个答案:

答案 0 :(得分:5)

正如documentation所述:

  

包装ObservableList 并使用提供的内容过滤其内容   谓语。 传播ObservableList中的所有更改   立即到FilteredList。

因此,您可以改为对基础来源ObservableList进行改组:

FXCollections.shuffle(ob);

示例:

ObservableList<String> obsList = 
    FXCollections.observableArrayList("Amanda", "Bill", "Adam", "Albus", "Cicero");
FilteredList<String> fList = new FilteredList<>(obsList, s -> s.startsWith("A"));

System.out.println(fList);
FXCollections.shuffle(obsList);
System.out.println(fList);

输出:

[Amanda, Adam, Albus]
[Adam, Albus, Amanda]