[原创]JAVA技巧:去除ArrayList<Object>里面的重复记录
简单说明
ArrayList中保存的是某种类型的对象,如User,现在需要将对象属性userid重复的都去掉,使userid唯一,要如何处理?
实现步骤
代码如下方所示,实现一个Comparator的比较器,然后比较两个对象的属性,如果对象属性相同,则返回0,并且因为treeset中的记录不会重复,所以就可以达到去重的目的。
public void removeDuplicates(List<Object> l) { // ... the list is already populated Set<Object> s = new TreeSet<Object>(new Comparator<Object>() { @Override public int compare(Object o1, Object o2) { // ... compare the two object according to your requirements return 0; } }); s.addAll(l); List<Object> res = Arrays.asList(s.toArray()); }
实际运用的代码
下面是实际运用过程中实现的代码,作用是将UserInfo中userid字段重复的去掉,如下:
/** * 将列表中重复的用户移除,重复指的是userid相同 * @param userList * @return */ public ArrayList<UserInfo> removeDuplicteUsers(ArrayList<UserInfo> userList){ Set<UserInfo> s= new TreeSet<UserInfo>(new Comparator<UserInfo>(){ @Override public int compare(UserInfo o1, UserInfo o2) { return o1.userId.compareTo(o2.userId); } }); s.addAll(userList); return new ArrayList<UserInfo>(s); }
参考资料
主要是参考stackoverflow上面的代码,链接如下: http://stackoverflow.com/questions/5741038/remove-duplicates-from-arraylists
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步