簡體   English   中英

排序ObservableList理解比較器和謂詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM