根据值对对象的链接列表进行排序



我有一个自定义类,如下所示。

class customclass {
int a;
int b;
}

我已经把这个类的对象放在了一个链表中。

LinkedList<customclass> ll = new LinkedList<customclass>();
customclass c1= new customclass();
c1.a=1;
c1.b=5;
ll.add(c1);
customclass c2= new customclass();
c2.a=10;
c2.b=5;
ll.add(c2);
customclass c3= new customclass();
c2.a=11;
c2.b=15;
ll.add(c3);

如何使用Collections.sort根据类customclass的每个对象中的"a"值对列表进行排序。

首先,请正确命名您的类。

第二,请使用适当的封装。

所以我们有:

class Customclass {
    private final int a;
    private final int b;
    public Customclass(int a, int b) {
        this.a = a;
        this.b = b;
    }
    public int getA() {
        return a;
    }
    public int getB() {
        return b;
    }
}

现在我们只需要进行分类:

final List<Customclass> ll = new LinkedList<>();
Collections.sort(ll, Comparator.comparing(Customclass::getA));

请注意,我使用菱形表示法<>来避免两次声明List的类型,而且我在LHS上使用接口List,而不是实现LinkedList

Collections.sort(l1, new Comparator<customclas>() {
            @Override
            public int compare(customclas o1, customclas o2) {
                if (o1.a < o2.a) return -1;
                else if (o1.a > o2.a) return 1;
                else return 0;
            }
        });
Comparator<customclass> comparator = new Comparator<customclass>() {
    public int compare(customclass c1,customclass c2) {
        //return c2.a - c1.a; 
        // use your logic
        // updating as per borris
        Integer.compare(c1.a,c2.a);
    }
};
Collections.sort(ll, comparator);

相关内容

  • 没有找到相关文章

最新更新