list中是可以有重复值的,set中是不可以的。所以经常利用这一点去掉list中的重复对象。如果list中是字符串或是基本数据类型。可以直接使用一下代码去掉重复。
List<String> list=new ArrayList<String>(); list.add("ssss"); list.add("ssss1"); list.add("ssss2"); list.add("ssss"); Set<String> set= new HashSet<String>(list); list.clear(); list=new ArrayList<String>(set);
set判断重复与否其实是调用equals方法。如果是对象的话重写被比较的bean即可,可是比较bean的时候会先比较两个bean的hashcode是否相等,所以也得重写hashcode方法。自己重写hashcode方法时一定要注意相等的两个对象返回的hashcode值相等,具体怎么重写hashcode方法在网上一搜有很多。这里就不再说了。呵呵,还是比较懒的。下面是一个例子代码。
bean代码:
public class TestBean { private Integer haopingNum; private String seriesName; public Integer getHaopingNum() { return haopingNum; } public void setHaopingNum(Integer haopingNum) { this.haopingNum = haopingNum; } public String getSeriesName() { return seriesName; } public void setSeriesName(String seriesName) { this.seriesName = seriesName; } @Override public boolean equals(Object obj) { if(obj!=null){ if(obj instanceof TestBean){ TestBean tb=(TestBean)obj; if(this.haopingNum.equals(tb.haopingNum)&&this.seriesName.equals(tb.getSeriesName())){ return true; } } } return false; } @Override public int hashCode() { int result=17; if(haopingNum!=null){ result+=haopingNum*37; } if(seriesName!=null){ result+=seriesName.hashCode(); } return result; } }
以下是测试方法
List<TestBean> list=new ArrayList<TestBean>(); TestBean tb=new TestBean(); tb.setHaopingNum(1); tb.setSeriesName("sss"); TestBean tb2=new TestBean(); tb2.setHaopingNum(1); tb2.setSeriesName("ssss"); TestBean tb3=new TestBean(); tb3.setHaopingNum(2); tb3.setSeriesName("sss"); list.add(tb); list.add(tb2); list.add(tb3); list.add(tb3); Set<TestBean> set= new HashSet<TestBean>(list); list.clear(); list=new ArrayList<TestBean>(set); System.out.println(list.size());
相关推荐
一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。
下面小编就为大家带来一篇list集合去除重复对象的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法
c#使用枚举高性能去除泛型中重复数据1KW只需要3秒
主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下
操作例子如下,创建一个实体对象PenBean,代码如下: /** * 笔实体 */ public class PenBean { /**类型*/ private String type; /**颜色*/ private String color; //... 省略 setter 和 getter public ...
主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下
主要介绍了vue中对象数组去重的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map...
这两行代码执行后,原始的String对象中的内容到底变了没有? 32、是否可以继承String类? 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 34、String 和StringBuffer的区别 35...
03 JS的history对象和location对象 04 JS的DOM节点 05 JS的DOM节点 第43章 01 上节知识回顾 02 js之onsubmit事件与组织事件外延 03 DOM节点的增删改查与属性设值 04 正反选练习 05 js练习之二级联动 06 jquery以及...
Change Value to Reference 将值对象改为引用对象 Change Reference to Value 将引用对象改为值对象 Replace Array with Object 用对象代替数组 Duplicate Observed Data 重复被观察数据 *...
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
2.本软件得到的太傻单词类反列表有6000多个类反,可以用improvetaisha中的[Omit English Dup.]工具去除重复至约3000多个类反。 3.由本软件制作的单词列表,在[Ascii Art]中用[open a file]打开即可使用。
集合内的数据对象都是唯一的(不能重复) 3.集合是无序的存储结构,集合内的数据没有先后关系 4.集合是可迭代对象 5.集合相当于是只有键没有值得字典(键就是集合中的数据) 6.集合内的元素是不可变的 好了,集合...
对象中还创建其它对象 98 内存 99 应用检查内存 99 对象需要检查内存 99 对象示例 99 应用程序和对象创建前 100 应用创建了对象后 100 把所有窗口都释放 100 先释放对象 100 释放函数...
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...