如何在java中对Arraylist进行排序
我有两种不同的方法从两个不同的DB表中获取数据。我将使用如何在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
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)}