去除arraylist容器中的相同的对象元素的方法

<span class="keyword" style="background-color: rgb(250, 250, 250); font-size: 1em; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;">boolean</span><span style="color: black; background-color: rgb(250, 250, 250); font-size: 1em; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;"> retainAll(Collection<?> c); </span>

在网上查到了 retainAll方法

然后就在代码中添加

<pre name="code" class="html">List<Employee> <span style="font-family: Arial, Helvetica, sans-serif;">employeeOfIntermediarys </span><span style="font-family: Arial, Helvetica, sans-serif;">= new ArrayList<Employee>(); </span><pre name="code" class="html">List<Employee> <span style="font-family: Arial, Helvetica, sans-serif;">tempList </span><span style="font-family: Arial, Helvetica, sans-serif;">= new ArrayList<Employee>();</span> if(tempList != null){ <span style="white-space:pre"> </span>//去掉<span style="font-family: Arial, Helvetica, sans-serif;">tempList 中与</span><span style="font-family: Arial, Helvetica, sans-serif;">employeeOfIntermediarys 中</span>相同的元素,在合并 List<Employee> eoiList = new ArrayList<Employee>(employeeOfIntermediarys); if (eoiList.retainAll(tempList)) { tempList.removeAll(eoiList); } employeeOfIntermediarys.addAll(tempList); }

然后发现不可以,查了好多东西,发现代码是对的,只是需要重写equals方法。

不知道为什么,因为之前写的小demo中用自定义的类book,如下,是可以正常使用的

public class Book { private int id; private String nameString; private String writer; public Book(){ id= -1; nameString = ""; writer = ""; } List<Book> books = new ArrayList<Book>(); List<Book> tempList = new ArrayList<Book>(); Book book1 = new Book(); book1.setId(1); book1.setNameString("dkjdf"); Book book2 = new Book(); book2.setId(2); book2.setNameString("到加福禄寿"); Book book3 = new Book(); book3.setId(3); book3.setNameString("dj地方"); Book book4 = new Book(); book4.setId(4); book4.setNameString("dkjdf"); Book book5 = new Book(); book5.setId(5); book5.setNameString("到加福禄寿"); Book book6 = new Book(); book6.setId(6); book6.setNameString("dj地方"); books.add(book1); books.add(book2); books.add(book5); books.add(null); tempList.add(book1); tempList.add(book4); tempList.add(null); tempList.retainAll(books); System.out.println(tempList.get(0).booktoString());

whatever,准备找一找collection的源代码看看,

重写了Employee中的equals方法后 。

如下:

@Override public boolean equals(Object c){ if (!(c instanceof Employee)) { return false; } Employee eoi = (Employee) c; if (eoi.getUserGuid().equals(userGuid)) { return true; } return false; }

上面的代码就可以正常运行了。

以上就是小编为大家带来的去除arraylist容器中的相同的对象元素的方法的全部内容了,希望对大家有所帮助,多多支持脚本之家~

时间: 2024-10-27 13:14:10

去除arraylist容器中的相同的对象元素的方法的相关文章

去除arraylist容器中的相同的对象元素的方法_Android

<span class="keyword" style="background-color: rgb(250, 250, 250); font-size: 1em; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;">boolean</span><span style="

c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了?

问题描述 c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了? 自己做写了一个管理数据源的DBManager,构想中从数据源里面获取的Connection使用完之后执行close()方法,然后把Connection对象闲置回连接池中. 但是测试出来的结果好像每次执行close()之后connection就销毁了. 代码如下: DBManager.java package ben.DBUtils; import java.sql.Connection; impo

关于asp.net中内置常用对象的属性方法

问题描述 大家能否告诉我下你你们做项目中经常用的内置对象的属性方法........谢谢各位!! 解决方案 解决方案二:Response,Application,Request,Session看LX怎么说解决方案三:你想干什么?解决方案四:你想让人把本该一本书的内容在这里用不超过10000个字符的篇幅浓缩出来?解决方案五:慢慢整...解决方案六:该回复于2012-04-20 11:55:03被版主删除解决方案七:多看书吧解决方案八:引用2楼的回复: 你想干什么? 我想知道常用是什么........

为什么Set及子类中没有提供随机取元素的方法

问题描述 在List中提供了get等方法来实现随机取在容器中的元素,但是,为什么在Set中没有提供呢,如果要在Set及子类中实现随机读取元素,该怎么操作,不可能自己去遍历或将Set存到List中去吧. 解决方案 1.可以用Set的一下两个方法获取可以随机访问的数组:引用 Object[] toArray() 返回一个包含 set 中所有元素的数组. <T> T[] toArray(T[] a) 返回一个包含 set 中所有元素的数组:返回数组的运行时类型是指定数组的类型. 2.可以继承Hash

Word2007中无法显示Visio对象的解决方法

不知道什么时候我的word 2007忽然不能显示Visio对象的图像,给工作带来很大麻烦.查阅网上的各种方法,主要就是修改Internet Explorer临时目录,不过我试了一下没有效果.下面是我的解决方法: 1.点word 2007左上角的圆圈图标,弹出菜单,选择Word选项: 2.选择"高级",网下拉,看到有"显示文档内容"那一段: 3.去掉"显示图片框(P)"前面的勾. Visio对象即可显示出来. 讨论:我不知道单独修改word选项就行

怎样删除STL容器中的元素

怎样删除STL容器中的元素 去除一个容器中有特定值的所有对象: 如果容器是vector.string或deque,使用erase-remove惯用法. 如果容器是list,使用list::remove. 如果容器是标准关联容器,使用它的erase成员函数. 去除一个容器中满足一个特定判定式的所有对象: 如果容器是vector.string或deque,使用erase-remove_if惯用法. 如果容器是list,使用list::remove_if. 如果容器是标准关联容器,使用remove_c

如何从当前spring容器中获得bean?

问题描述 在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象.请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入.发现WebApplicationContext wac = ContextLoader.getCurrentWebApplicationCon;但这个方法只能获得web容器,我想做的是获得当前的spring root container即无论当前是通过

PHP使用正则表达式获取微博中的话题和对象名_php技巧

本文实例讲述了PHP使用正则表达式获取微博中的话题和对象名的方法.分享给大家供大家参考.具体实现方法如下: $post_content = "@jb51和@twitter在研究用#PHP#的#正则表达式#过滤话题和对象名"; $tag_pattern = "/\#([^\#|.]+)\#/"; preg_match_all($tag_pattern, $post_content, $tagsarr); $tags = implode(',',$tagsarr[1])

JavaScript数组对象实现增加一个返回随机元素的方法_javascript技巧

本文实例讲述了JavaScript数组对象实现增加一个返回随机元素的方法.分享给大家供大家参考.具体如下: 核心特性: 概率随机.顺序随机.随机冒泡 本方法 来自个人手写 JavaScript 的实践,只涉及 JavaScript 1.5(ECMAscript 3 国际标准)语言本身,在所有 JS 引擎实现中通用~ 为Array对象新增random方法: (function () { function Random_SN(iArray) { return Math.floor(Math.rand