繁体   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