java - 接受自定义比较器并将其应用于列表的方法。 java

标签 java comparator

我想使用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/

相关文章:

java - 如何将比较器添加到内部类?

java - Java 中用点/星着色的进度

java - Java中\G边界匹配器的使用

java - 如何在 Spring 中处理具有并发访问的事务

java - 如何在 StdOut.printf (JAVA) 中使用整数 n

java - 如何使用整数比较器实现选择排序?

java - CompareToBuilder 的这种使用是否被认为效率低下?

Java:根据匹配的字符串/模式对数组进行排序

java - 在 Java 中放置比较器类的最佳位置是哪里

java - 无法对批处理创建的文件执行任何操作