Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中对Arraylist进行排序_Java_Arraylist_Comparator - Fatal编程技术网

如何在java中对Arraylist进行排序

如何在java中对Arraylist进行排序,java,arraylist,comparator,Java,Arraylist,Comparator,我有两种不同的方法从两个不同的DB表中获取数据。我将使用bean类将这两个数据添加到相同的ArrayList List<LeadVO> leadvoList = new ArrayList<LeadVO>(); // array list declaration 最后,我将把这个bean添加到数组列表中: leadvoList.add(statusVO); 创建了单独的类进行比较 公共类ComparatorDAO实现了Comparator{ public int c

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

List<LeadVO> leadvoList = new ArrayList<LeadVO>(); // array list declaration
最后,我将把这个bean添加到
数组列表中

 leadvoList.add(statusVO);
创建了单独的类进行比较

公共类ComparatorDAO实现了Comparator{

public int compare(LeadVO arg0, LeadVO arg1) {


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

}
}

sort(commentVOList,newcomparatordao())//排序方法

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

请帮我做这件事

再次感谢


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

这里是一个例子:希望您不介意硬解释

 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);
    }
}
List unsortList=newarraylist();
添加(“CCC”);
不排序列表。添加(“111”);
不排序列表。添加(“AAA”);
未分类列表。添加(“BBB”);
添加(“ccc”);
未分类列表。添加(“bbb”);
不排序列表。添加(“aaa”);
不排序列表。添加(“333”);
不排序列表。添加(“222”);
//排序前
System.out.println(“ArrayList是unsort”);
用于(字符串温度:unsortList){
系统输出打印项次(温度);
}
//对列表排序
集合。排序(非排序列表);
//分类后
System.out.println(“ArrayList已排序”);
用于(字符串温度:unsortList){
系统输出打印项次(温度);
}
}

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

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

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

理想情况下,如果您的日期不能保证为非空,您应该添加空检查或使用类似于ObjectUtils.compare from commons lang的内容


您也可以通过创建一个
比较器
来实现这一点,而不是像其他海报所建议的那样实现
Comparable
,如果您需要按多个值对VO进行排序,这可能会更好。如果只需要按日期排序,这种方法可能会简单一些。

您需要将该类compareTo方法重写为方法,因为它是java用于排序的方法

只需覆盖需要排序的字段

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

比如?@Manju我刚刚更新了你的代码,可能有一些小的语法错误,因为我没有测试。在我的手机上Sry,我也省略了空检查等
Collections.sort(list, new RecordComparator());
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);
compareTo(Object other){Someclass.somefield.compareTo(other.smeField)}