2014-10-31 60 views
-1

我有两种不同的方法可以从两个不同的DB表中获取数据。我将使用bean类将两个数据添加到相同的ArrayList如何在Java中对Arraylist进行排序

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实现比较{

public int compare(LeadVO arg0, LeadVO arg1) { 


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

} 

}

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

理想,这将按照日期排序不相信这将处理日期字符串

请再次帮助我,这

感谢

现在我需要解决这按列表中已经存在的日期顺序列出。我的意思是列表中的日期。

+1

喜欢[即](HTTP字段中的方法: //stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects-by-property)? – John 2014-10-31 13:49:23

+0

@Manju我刚刚更新了你的代码,因为我没有测试,所以可能会出现一些小的语法错误。 – Lokesh 2014-10-31 13:56:14

回答

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检查或使用类似ObjectUtils.compare从公共浪,如果你的日期,但不保证非空。

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

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

您可以按使用ArrayList的比较:

​​

然后:

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

日子会把需要重写这个类compareTo方法,因为它是哪个Java着眼于用于分拣

只需重写u需要排序

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

Sry在我的手机上,也省略了空检等 – MRK187 2014-10-31 13:58:58