如何在java中洗牌FilteredList?
当我想洗牌一个如何在java中洗牌FilteredList?,java,javafx,java-8,javafx-8,Java,Javafx,Java 8,Javafx 8,当我想洗牌一个FilteredList时,我得到一个java.lang.UnsupportedOperationException 如何处理 代码: FilteredList filteredData= 新建FilteredList(ob,filterByOption(option.get(“selectedCard”)、option.get(“chapter”)); if(option.get(“cardOrder”)=“shuffle”){ 过滤卡=过滤数据; FXCollections.s
FilteredList
时,我得到一个java.lang.UnsupportedOperationException
如何处理
代码:
FilteredList filteredData=
新建FilteredList(ob,filterByOption(option.get(“selectedCard”)、option.get(“chapter”));
if(option.get(“cardOrder”)=“shuffle”){
过滤卡=过滤数据;
FXCollections.shuffle(过滤卡);
}
如中所述:
包装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);
@user3235815:您可以通过单击左侧的接受答案。
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]