繁体   English   中英

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

[英]Sort using a comparator as a default method in an iterable interface

我正在尝试在扩展Iterable<T>的接口中编写一个排序方法,但是它不起作用,我认为它在逻辑上是正确的,但是不会交换元素。 该接口用于创建一个与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();
    }
}

您可以使用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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM