list排序加去重功能
来源:互联网 发布:黑马校对软件下载 编辑:程序博客网 时间:2024/04/30 00:03
最近遇到一个问题,需要在list的去重功能,在网上找了很多,都没有好的解决办法,发现好多人在用重载hashCode和equals来实现去重,于是就尝试了下,最后还真可以,你需要在你的实体类中重载hashCode和equals代码如下:
package com.cs.flyox.flyox.entity;import java.io.Serializable;import java.util.List;public class Event implements Serializable{ private static final long serialVersionUID = 1L; private int eventid; private String localid; public int getEventid() { return eventid; } public void setEventid(int eventid) { this.eventid = eventid; } public String getLocalid() { return localid; } public void setLocalid(String localid) { this.localid = localid; } @Override public int hashCode() { String aaString = localid + eventid; return aaString.hashCode(); } @Override public boolean equals(Object o) { if(o == this) return true; if(o == null) return false; Event event = (Event)o; if(event.getLocalid().equals(this.getLocalid())) return true; return true; }}使用时,需要配合HashSet使用,将你的list的数据先加到hashset的中,在将list的清除,然后在将去重的hashset数据加回到list中,这样就可以实现去重了。
HashSet<Event> h = new HashSet<Event>(list); list.clear(); list.addAll(h);用过hashset 的程序猿们都知道,hsahset的是没有顺序的,如果想要排序一下的方法可以满足你,代码如下:
public class SortList<E>{ public void Sort(List<E> list, final String method, final String sort){ Collections.sort(list, new Comparator<Object>() { @SuppressWarnings("unchecked") public int compare(Object a, Object b) { int ret = 0; try{ Method m1 = ((E)a).getClass().getMethod(method, null); @SuppressWarnings("unchecked") Method m2 = ((E)b).getClass().getMethod(method, null); if(sort != null && "desc".equals(sort))//倒序 ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString()); else//正序 ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString()); }catch(NoSuchMethodException ne){ System.out.println(ne); }catch(IllegalAccessException ie){ System.out.println(ie); }catch(InvocationTargetException it){ System.out.println(it); } return ret; } }); } }用法:
SortList<Event> sortList = new SortList<Event>(); sortList.Sort(list, "getEventid", "desc");
0 0
- list排序加去重功能
- C# LIST排序功能
- list列表排序功能!
- .NET泛型List实现快速排序、查找功能
- java中List的排序功能的实现
- 为list控件增加排序功能,并添加header排序图标
- List排序
- list 排序
- list排序...
- List排序
- List 排序
- List排序
- LIST排序
- list排序
- List 排序
- list排序
- LIST 排序
- List 排序
- 算法竞赛入门经典 习题3-5矩阵旋转
- Sutherland-Hodgeman多边形裁剪(转载)
- 论文页眉页脚设置
- ios app开发教程告诉你开发不可缺少的2个工具
- Using Lists as Queues in Python----在Python中把链表当作队列使用
- list排序加去重功能
- Android SQLite3工具常用命令行总结
- 算法竞赛入门经典 习题3-4简单计算器
- 千万级并发HAproxy均衡负载系统介绍
- C++ Primer Plus学习笔记之继承类的初始化顺序
- 简单的动画效果:BOUNCE程序代码分析
- Spring AOP实现日志输出时的引入包错误
- C++ Java要点记录
- 算法竞赛入门经典 习题3-3乘积的末3位