[英]Sorting ObservableList understanding Comparator and Predicate
我有一個ObservableList<Auftrag>
,其中包含一些數據。
private ObservableList<Auftrag> data = FXCollections.observableArrayList();
// add some test data
data.add(new Auftrag("AB1", "Car 1",1));
data.add(new Auftrag("AB1", "Car 2",22));
data.add(new Auftrag("AB1", "Car 3",2));
data.add(new Auftrag("AB2", "Fruit A",33));
data.add(new Auftrag("AB2", "Fruit B",45));
data.add(new Auftrag("AB3", "Music 1",101));
data.add(new Auftrag("AB3", "Music 2",102));
data.add(new Auftrag("AB3", "Music 3",103));
現在,我想返回一個有序列表,該列表由第三個數據參數(int) ASC
排序。 我嘗試通過設置比較器來使用SortedList
,但是沒有運氣。
老實說,關於排序和過濾的文檔有點“過濾”;)我想了解比較器和謂詞的用法...供初學者使用...
到目前為止,我嘗試將ObservableList
放入sortedList
並與比較器一起播放。 getDaysTillDelivery()是Auftrag模型中的一個函數,它返回int值。
SortedList<Auftrag> sorted = data.sorted();
sorted.setComparator(new Comparator<Auftrag>() {
@Override
public int compare(Auftrag arg0, Auftrag arg1) {
return arg0.getDaysTillDelivery() > arg1.getDaysTillDelivery() ? arg0.getDaysTillDelivery(): arg1.getDaysTillDelivery();
}
});
通過使用謂詞,我無法使用google
找到的現有示例。
任何幫助將是巨大的。
sorted.setComparator(new Comparator<Auftrag>() {
@Override
public int compare(Auftrag arg0, Auftrag arg1) {
return arg0.getDaysTillDelivery() > arg1.getDaysTillDelivery() ? arg0.getDaysTillDelivery(): arg1.getDaysTillDelivery();
}
});
那行不通。
尚不清楚Comparator
的文檔? 引用javadoc本身有關compare()
方法的內容如下(強調我的意思):
比較其兩個參數的順序。 當第一個參數小於,等於或大於第二個參數時,返回負整數,零或正整數 。
這對我來說很清楚。
您的比較器應閱讀(注意:Java 8代碼)
sorted.setComparator(Comparator.comparing(Auftrag::getDaysTillDelivery));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.