我有一个集合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"));
解决方案 »
- 有关Applet的生命周期的问题
- 求一个qrcode的编码算法 有原码最好了
- 有些专业英语单词不会,怎么办?
- jtable???
- 為什麼我再執行appletviewer的時候會有這種錯誤訊息呢??
- 太急了,就差一点
- 怎样禁止选择JTree类的节点?(在线)
- 我用的是Borland JBuilder 9 Enterprise Trial,请问这个Trial版和正式版有什么区别吗?如果有的话,那儿可以下的没有这个Trial的?谢谢
- 新手上路:编译问题,.JAVA文件能在SUNONE里面编译,但不能在DOS下编译,why?
- scjp考试卷便宜卖有人要吗
- 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);
}
}