obj包含 名称 价钱 日期
如何按日期,名称或价格排序,并具有递增和递减功能?
谢谢您的时间
答案 0 :(得分:2)
有一些方法可以做到这一点。
1,流:
list.stream()
.sorted(Comparator.comparing(MyObject::getPrice))
.collect(Collectors.toList())
对于倒序:
list.stream()
.sorted(Comparator.comparing(MyObject::getName).reversed())
.collect(Collectors.toList())
2,Comparator
list.sort(comparator)
或Collections.sort(list,comparator)
Comparator<MyObj> priceComparator=new Comparator<MyObj>() {
@Override
public int compare(MyObj o1, MyObj o2) {
//Note that compareTo only available if you implement comparable
//If not, return values I describe later
//Or use Comparator.comparing(field/keyExtractor)
return o1.getPrice().compareTo(o2.getPrice());
}
})
您可以为任何字段创建实现。您可以在此处实现逻辑以组合字段等。
3,在Data对象中实现Comparable
接口。
public class MyObj implements Comparable<MyObj> {
@Override
public int compareTo(MyObj o) {
return price.compareTo(o.getPrice());
}
[...]
}
Comparator
比Comparable
更灵活,因为您可以选择行为运行时间。
如果需要自定义逻辑,则可以在compare方法中编写它。
您可以返回:
0 if equals
1 if left is greater
-1 if right is greater
例如在自定义比较器中:
public int compare(MyObj o1, MyObj o2) {
int result=0;
if(o1.price>o2.price) result=1;
[...]
return result;
}