java自訂ArrayList排序, 大神略過,javaarraylist
一個list裡面有兩種對象,現在有個需求必須對不同的對象的日期來排序,以下是代碼
/**
*@author 肖華 xh1991101@163.com
*/
List<Message> messages=messageSrv.getList(u.getUserId());
List<Object> messageList=new ArrayList<Object>();
for(Object o:messages){
messageList.add(o);
}
for(Object o:checks){
messageList.add(o);
}
Collections.sort(messageList, new Comparator(){
public int compare(Object o1, Object o2) {
if(o1 instanceof Message && o2 instanceof Message){
Message m=(Message) o1;
Message m2=(Message) o2;
if(m.getMessageDate().after(m2.getMessageDate()))
return 1;
if(m.getMessageDate().equals(m2.getMessageDate()))
return 0;
if(m.getMessageDate().before(m2.getMessageDate()))
return -1;
}else if(o1 instanceof CheckRecord && o2 instanceof Message){
CheckRecord m=(CheckRecord) o1;
Message m2=(Message) o2;
if(m.getCdate().after(m2.getMessageDate()))
return 1;
if(m.getCdate().equals(m2.getMessageDate()))
return 0;
if(m.getCdate().before(m2.getMessageDate()))
return -1;
}else if(o1 instanceof CheckRecord && o2 instanceof CheckRecord){
CheckRecord m=(CheckRecord) o1;
CheckRecord m2=(CheckRecord) o2;
if(m.getCdate().after(m2.getCdate()))
return 1;
if(m.getCdate().equals(m2.getCdate()))
return 0;
if(m.getCdate().before(m2.getCdate()))
return -1;
}else if(o1 instanceof Message && o2 instanceof CheckRecord){
Message m=(Message) o1;
CheckRecord m2=(CheckRecord) o2;
if(m.getMessageDate().after(m2.getCdate()))
return 1;
if(m.getMessageDate().equals(m2.getCdate()))
return 0;
if(m.getMessageDate().before(m2.getCdate()))
return -1;
}
return 0;
}
寫個日誌不容易,轉載請註明出處:http://blog.csdn.net/xh199110 謝謝
Java中怎對ArrayList集合中的指定列排序
ArrayList 就是一個可以改變大小的一維數組.當然 你可以往ArrayList裡放ArrayList或者其它的容器什麼的那就用標準的排序方法就行了
用容量類就用Collections.sort 數組就用Arrays.sort
還有什麼不清楚直接m我 百度知道最近抽風了 不能回答追問
【急】java 實現對ArrayList按升序排序並輸出結果,ArrayList放的是99個隨機產生的int
匯入兩個類
import java.util.Collections;
import java.util.Comparator;
你的Person類加個方法
public int getAge(){
return this.age;
}
//實現對persons按升序排序並輸出結果之後插入如下代碼
if(persons.size>0){
//建立一個Comparator對象
Comparator personComparator=new Comparator(){
public int compare(Object arg0,Object arg1){
Person p1=(Person)arg0;
Person p2=(Person)arg1;
int age1=p1.getAge();
int age2=p2.getAge();
return age1-age2;
}
};
Collections.sort(persons,personComparator);//對persons內的元素按年齡排序
}
for(int i=0;i<persons.size();i++){
Person p=(Person)persons.get(i);
System.out.println(p.getAge());
}
碼字可真辛苦,尤其在沒有使用開發工具的情況下。