使用比较器作为可迭代接口中的默认方法进行排序

时间:2018-01-18 10:02:43

标签: java list linked-list

我试图在扩展Iterable<T>的界面中编写排序方法,但它不起作用,我认为它是&#34;逻辑上&#34;正确但它不会交换元素。该接口用于创建一个非常类似于Java的List,我的目标是创建一个受LinkedList启发的类,因此它具有ListIterator。有什么建议?这是方法的代码:

default void sort(Comparator<T> c){
    ListIterator<T> lit = listIterator();
    boolean scambio = true;
    while(scambio){
        scambio = false;
        T n1 = null;
        T n2;
        if(lit.hasNext())
            n1 = lit.next();
        while(lit.hasNext()){
            n2 = lit.next();
            if(c.compare(n1,n2) > 0){
                T tmp = n2;
                n2 = n1;
                n1 = tmp;
                scambio = true;
            }
            n1 = n2;
        }
        lit = listIterator();
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Collections.sort来有效地对商品进行排序:

Collections.sort(lit, new Comparator<T>()   {
    @Override
    public int compare(T n1, T n2)    {
        // You may use any logic here considering n1 and n2
        return n1.compare(2n);
    }
}