如何在java中对Arraylist进行排序

时间:2014-10-31 13:46:20

标签: java arraylist comparator

我有两种不同的方法从两个不同的数据库表中获取数据。我将使用ArrayList类将这两个数据添加到同一bean

List<LeadVO> leadvoList = new ArrayList<LeadVO>(); // array list declaration

while loop中,我将使用bean类加载所有数据。在此操作之前,我将触发两个表的查询。

while(true){
     LeadVO statusVO = new LeadVO(); //initializing bean class 

// code to load all value using setters 

最后,我将把这个bean添加到array list

 leadvoList.add(statusVO);

创建了单独的比较类

公共类ComparatorDAO实现了Comparator {

public int compare(LeadVO arg0, LeadVO arg1) {


    return arg1.getCreatedtimeFormat().compareTo(arg0.getCreatedtimeFormat()) ;

}

}

Collections.sort(commentVOList,new ComparatorDAO()); //排序方法

理想情况下,这不会根据日期排序我相信这会将日期视为字符串

请帮助我

再次感谢

现在我需要按照列表中已存在的日期顺序对此列表进行排序。我指的是列表中的日期。

4 个答案:

答案 0 :(得分:1)

如果您的LeadVO包含您要排序的日期,请在您的VO中实施Comparable界面,然后使用Collections.sort()对VO集合进行排序。

public class LeadVO implements Comparable<LeadVO> {
    private Date date;

    // other properties, getters and setters

    @Override
    public int compareTo(LeadVO other) {
        return date.compareTo(other.getDate());
    }
}

和这样的那种:

Collections.sort(leadVoList);

如果您的日期不能保证为非null,理想情况下,您应该添加空检查或使用来自commons-lang的ObjectUtils.compare。

此外,您可以通过创建Comparator而不是按照其他海报的建议实施Comparable来实现此目标,如果您需要按多个值对VO进行排序,这可能会更好。如果您只需要按日期对其进行排序,这种方法可能会更简单一些。

答案 1 :(得分:0)

这是一个例子:希望你不要介意硬解释。

 List<String> unsortList = new ArrayList<String>();

    unsortList.add("CCC");
    unsortList.add("111");
    unsortList.add("AAA");
    unsortList.add("BBB");
    unsortList.add("ccc");
    unsortList.add("bbb");
    unsortList.add("aaa");
    unsortList.add("333");
    unsortList.add("222");

    //before sort
    System.out.println("ArrayList is unsort");
    for(String temp: unsortList){
        System.out.println(temp);
    }

    //sort the list
    Collections.sort(unsortList);

    //after sorted
    System.out.println("ArrayList is sorted");
    for(String temp: unsortList){
        System.out.println(temp);
    }
}

答案 2 :(得分:0)

您可以使用比较器对arrayList进行排序:

public Comparator<Record> RecordComparator = new Comparator<Record>() {
    public int compare(Record record1, Record record2) {
        return record1.getDate().compareTo(record2.getDate());
    }
};

然后:

Collections.sort(list, new RecordComparator());

答案 3 :(得分:0)

你需要覆盖那个类compareTo方法,因为它是java查找排序的方法

只需覆盖您需要排序的字段

compareTo(Object other){Someclass.somefield.compareTo(other.smeField)}