我有一个集合ArrayList<User>,里面装有三个user对象,user对象里有三个属性,id name和date其中user.getName里面有重复的值,比如list第一个下标的setName("a"),第三个下标的setName("a")也是a如果发现name值相同,那么再把name值相同的两个对象里的data属性取出来做比较,获取date值大的那条记录(那个user对象),data小的那个则不要了。请问代码如何实现呀?谢谢~ List<User> list = new ArrayList<User>();
User bo1 = new User();
bo1.setUserId("1");
bo1.setName("a");
bo1.setDate(Date.valueOf("2012-05-11 11:37:26"));
Userbo2 = new User();
bo2.setUserId("2");
bo2.setName("b");
bo2.setDate(Date.valueOf("2012-05-11 11:37:26"));
Userbo3 = new User();
bo3.setUserId("3");
bo3.setName("a");
bo3.setDate(Date.valueOf("2012-05-11 11:37:27"));
User bo1 = new User();
bo1.setUserId("1");
bo1.setName("a");
bo1.setDate(Date.valueOf("2012-05-11 11:37:26"));
Userbo2 = new User();
bo2.setUserId("2");
bo2.setName("b");
bo2.setDate(Date.valueOf("2012-05-11 11:37:26"));
Userbo3 = new User();
bo3.setUserId("3");
bo3.setName("a");
bo3.setDate(Date.valueOf("2012-05-11 11:37:27"));
解决方案 »
- 如何去理解Java中插入法
- Quartz设置每小时的第10分钟执行如何写CronExpression表达式
- 一个关于线程的小程序,请大家帮我分析下
- java 的udp服务器端代码
- 请教一个关于拼RGB颜色算法的思路--在线等
- 如何用java实现这个算法,200分,急
- 已经是"iso-8859-1"类型了,为什么中文的名字就是删除不掉!
- 我的JDK无法使用,怎么办?
- java中是否有system.setProperty(),在哪个包里,从那下载!!!!!!!!!!!!!
- 在java官网上下载的代码,运行不正常。Couldn't find file:
- JAVA语言 程序 设计
- java接口(interface)
HashMap<String, User> map = new HashMap<String, User>();
for (int i=0;i<list.size();i++) {
User vo = list.get(i);
if (map.get(vo.getName() == null) {
map.put(vo.getName(), vo);
} else {
User old = map.get(vo.getName());
略:比较old和vo谁的date大,然后写入map中。
}
}最后map中剩下的元素就是你要的结果,需要的话就把它重组为List了。
Collections.sort(list, new Comparator<User>() { //排序
public int compare(User u1, User u2) {
if (u1 == null) {
return (u2==null ? 0 : 1);
} else if (u2 == null) {
return -1;
} if (u1.getName().equals(u2.getName())) { //按姓名排
return (int)(u2.getDate().getTime() - u1.getDate().getTime());
} else if (u2.getDate().getTime() - u1.getDate().getTime()) {
return u1.getUserId().compareTo(u2.getUserId());
} return u1.getName().compareTo(u2.getName());
}
});
//删除
User last = null;
for (int i=list.size()-1; i>=0; i--) {
if (last != null) {
if (last.getName().equals(list.get(i).getName())) {
list.remove(i+1);
}
last = list.get(i);
}
}