我想使用java中的自定义比较器对列表进行排序。 例如:
public class Cart implements Comparator<Order>{
private String cartId;
private List<Order> productOrdersList;
//is this the correct way to sort based on custom comparator?
public void sortOrders(Comparator<Order> order){
//code to sort the list
//Collections.sort(productOrdersList, order);
}
@Override
public int compare(Order t, Order t1) {
return t.getProduct().compareTo(t1.getProduct());
}
我需要知道如何使用 sortOrders() 方法对 ProductOrdersList 进行排序。 任何帮助将不胜感激!
最佳答案
您似乎正在混合两种仍然有效但仍然不同的方法。
内部方法
public class Cart{
private String cartId;
private List<Order> productOrdersList;
public void sortOrders(Comparator<Order> order){
Collections.sort(productOrdersList, order);
}
}
在这种情况下,排序操作被 sortOrders 方法隐藏(或包装),并且只有排序标准来自外部。
外部方法
public class Cart implements Comparator<Order>{
private String cartId;
private List<Order> productOrdersList;
private Comparator<Order> internal;
public void setCriteria(Comparator<Order> comparator){
this.internal = comparator;
}
@Override
public int compare(Order t, Order t1) {
return this.internal.compare(t,t1);
}
}
在这种情况下,标准再次来自外部,但排序操作也是从类外部调用的,如下所示:
Collections.sort(cart.getProductOrdersList(), cart);
所以这两种方法都没有错,但是,只是,我更喜欢第一种,因为它看起来不那么多余。
关于java - 接受自定义比较器并将其应用于列表的方法。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59522116/