2014-11-20 60 views
-2

我有我需要排序的自定义Java用户的ArrayList。用户只是系统中的用户。但是用户有很多属性。要创建初始列表,这些都是调用必要的:排序自定义类的ArrayList

ArrayList<Identity> contractors = (ArrayList<Identity>) resource.searchUsers(null, null, null, null, null, null, null, null, "Contractor", "active"); 

对象resource也是一个自定义的Java类,必要的数据库调用返回的contractors.

数组列表我的问题是我怎么会去排序一个复杂项目的数组列表,如许多不同的属性?

+3

以同样的方式你排序简单项目的ArrayList。你可以通过'Collections.sort(myArrayList)'进行排序。关键在于您编写的比较器的“比较(...)”或比较的“compareTo(...)”方法。你有什么尝试?它怎么不起作用? – 2014-11-20 19:55:00

+0

Collections.sort(List )T extends Comparable – 2014-11-20 19:56:48

+0

我已经尝试创建项目的子列表,但不知道如何比较列表中的两项。 – 2014-11-20 19:56:50

回答

2

有两个步骤:

class CustomComparator implements Comparator<Identity> { 
    @Override 
    public int compare(Identitya, Identityb) { 
     return // compare here all values 
    } 
} 

然后用这个比较有排序功能:

Collections.sort(peps, new CustomComparator()); 

如果你有兴趣的排序,你必须写内部比较器登录。

由于您可以根据自己的需求创建和使用多个比较器,因此该解决方案比您的DTO实现Comparable更清洁。而且你的代码干净,容易测试。

有用的链接在这里:

http://www.tutorialspoint.com/java/java_using_comparator.htm