list = list.stream().filter(f->f.getProbability().compareTo(BigDecimal.ZERO)>=0).sorted(Comparator.comparing(AwardSign::getProbability)).collect(Collectors.toList());
这段代码使用了Java 8中的Stream API对一个列表进行了过滤、排序和收集操作。
首先,list
是一个列表(List)对象。通过调用stream()
方法,将列表转换为一个流(Stream)对象,以便进行后续的操作。
接下来,使用filter()
方法对流中的元素进行过滤。在这里,使用了Lambda表达式:
f -> f.getProbability().compareTo(BigDecimal.ZERO) >= 0
作为过滤条件。该条件表示只保留满足概率大于等于0的元素。
(probability这个属性是我当前AwardSign这个类中的一个属性,你要对什么类型的List做操作由你自己定,过滤条件也是自己定,过滤条件直接写在filter()方法里面即可)
然后,使用sorted()
方法对流中的元素进行排序。在这里,使用了Comparator.comparing(AwardSign::getProbability)
作为排序的依据。该比较器表示按照AwardSign对象的概率属性进行升序排序。
注:
Comparator.comparing()
是Java中的一个静态方法,创建一个升序比较器(Comparator)对象,用于使用对象的某个属性进行比较。
创建降序比较器是Comparator.reverseOrder()。
比较器的使用方法是把创建的比较器对象丢到 list.sort() 里面去即可按照想要的属性、想要的顺序排序,但是这个方法最好少用,占用资源比sql中使用排序大。
最后,使用collect()
方法将过滤和排序后的元素收集到一个新的列表中。在这里,使用了Collectors.toList()
来生成一个新的列表对象。
最终,这段代码的作用是对原始列表进行过滤,只保留概率大于等于0的元素,并按照概率属性进行升序排序,然后将结果收集到一个新的列表中。
希望我用到的这个例子对你有帮助。如果你还有其他问题,可以评论或者私信。