list list 怎么根据一个值对这个List重新排序



---------给--力--的--分--割--线-------------------
正文:
这是两个list得出来得结果集用得sql "select do.id, c.startTime ,c.ani from depat order by startTime desc";
我把两个list合并成一个list后由于顺序乱了,我还想根据里面一个startTime属性值来排序应该怎么做啊,排序完放入另外一个新的list
List resultSet = new ArrayList();
List resultSetOne = null;
List resultSetTwo = null;
resultSetOne = queryOne.list();
resultSetTwo = queryTwo.list();
resultSet.addAll(resultSetOne);
resultSet.addAll(resultSetTwo);
---------给--力--的--分--割--线-------------------
自己定义一个比较器MyCom实现Comparator接口
然后
Comparator comp = new MyCom();
Collections.sort(resultSet,comp);
---------给--力--的--分--割--线-------------------
自己定义一个比较器MyCom实现Comparator接口
然后
Comparator comp = new MyCom();
Collections.sort(resultSet,comp);
---------给--力--的--分--割--线-------------------
大哥 这个比较器应该怎么写啊 没写过这个东西 能否给点提示 或实现啊 谢谢了
---------给--力--的--分--割--线-------------------
就是实现一个接口,没看过可以找本书慢慢看
---------给--力--的--分--割--线-------------------
比较器的定义,就是一个实现Comparator接口定义
实现如下:
Java code


package bt_lose;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
* 简单实体

* @author botao

*/
public class User {
@Override
public String toString() {

return "User: id=" + uid + " uname=" + uname + " upass=" + upass;
}

private int uid;

private String uname;

private String upass;

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}

public String getUpass() {
return upass;
}

public void setUpass(String upass) {
this.upass = upass;
}

public User() {

}

public User(int id, String name, String pass) {
this.uid = id;
this.uname = name;
this.upass = pass;
}

public int getUid() {
return uid;
}

public void setUid(int uid) {
this.uid = uid;
}

public static void main(String[] args) {
List<User> list = new ArrayList<User>();
list.add(new User(1, "name1", "pass1"));
list.add(new User(3, "name3", "pass3"));
list.add(new User(2, "name2", "pass2"));
list.add(new User(4, "name4", "pass4"));
System.out.println("before sort");
for (User user : list) {
System.out.println(user);
}
//比较器是通过匿名类来做的
Collections.sort(list, new Comparator<User>() {

public int compare(User arg0, User arg1) {
//定义如何比较
return arg0.getUid() - arg1.getUid();
}
});
System.out.println("after sort");
for (User user : list) {
System.out.println(user);
}
}
}

     我是使用红色代码  完成重新排序的!

 这个是按照顺序的, 

假如需要倒序的话 就把return arg0.getUid() - arg1.getUid();中的arg0 arg1对话下位置~

我的是字符串的时间格式对比,,调用这个方法compareTo(String anotherString)

若是其他的对比,各位各自看情况了得意
---------给--力--的--分--割--线-------------------
xd门 我就是想知道怎么比较单个属性 那个属性又是时间类型的 ,能否具体说一下啊
---------给--力--的--分--割--线-------------------
时间怎么排序啊 还是倒序
---------给--力--的--分--割--线-------------------
public int compare(Object o1, Object o2) {
Depat d1 = (Depat) o1;
Depat d2 = (Depat) o2;
return d1.getStartTime().after(d2.getStartTime())?1:0;
}
---------给--力--的--分--割--线-------------------
把他转换成date类型,然后调用他的after或者before方法,根据返回值进行判断
---------给--力--的--分--割--线-------------------
package test1.sort;
import java.util.Comparator;
public class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
MyObject obj1 = (MyObject) o1;
MyObject obj2 = (MyObject) o2;
return obj1.getStartTime().before(obj2.getStartTime())?1:0;
}
}
package test1.sort;
import java.util.Date;
public class MyObject {
private int id;
private Date startTime;
private String ani;
public MyObject(int id,Date startTime,String ani) {
this.id = id;
this.startTime = startTime;
this.ani = ani;
}
public String getAni() {
return ani;
}
public void setAni(String ani) {
this.ani = ani;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
}
package test1.sort;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyyMMDD");
List list = new ArrayList();
MyObject o1 = new MyObject(1,format.parse("20071220"),"1");
MyObject o2 = new MyObject(2,format.parse("20071219"),"1");
MyObject o3 = new MyObject(3,format.parse("20071217"),"1");
MyObject o4 = new MyObject(4,format.parse("20071222"),"1");
MyObject o5 = new MyObject(5,format.parse("20071223"),"1");
list.add(o1);
list.add(o2);
list.add(o3);
list.add(o4);
list.add(o5);
Collections.sort(list, new MyComparator());
for (int i = 0; i < list.size(); i++) {
MyObject temp = (MyObject)list.get(i);
System.out.println(format.format(temp.getStartTime()));
}
}
}
---------给--力--的--分--割--线-------------------
哦,写的不错啊
---------给--力--的--分--割--线-------------------
怎么没人顶阿?
---------给--力--的--分--割--线-------------------
怎么没人顶阿?
---------给--力--的--分--割--线-------------------


转载 http://www.taozhi168.com/knowledge_page/20120526/20120526195201046.shtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值