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

时间:2014-09-16 11:14:05

标签: java linked-list

我有一个自定义类如下。

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对&#34; a&#34;的值进行排序。来自类customclass的每个对象。

3 个答案:

答案 0 :(得分:1)

首先,请正确命名您的课程。

其次,请使用适当的封装。

所以我们有:

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的类型,并且我使用接口List,而不是实现,{{1在LHS上。

答案 1 :(得分:0)

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;
            }
        });

答案 2 :(得分: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);