`
xuedong
  • 浏览: 288850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

去掉list中的重复对象

    博客分类:
  • java
阅读更多

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());

 

 

0
1
分享到:
评论
1 楼 grandboy 2011-08-25  
这样有一个副作用,就是set没有顺序的,但是list有。

相关推荐

    list去掉重复对象

    一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。

    list集合去除重复对象的实现

    下面小编就为大家带来一篇list集合去除重复对象的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    两个list比较 取不同的对象

    比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法

    C#高性能枚举去除泛型中的重复数据

    c#使用枚举高性能去除泛型中重复数据1KW只需要3秒

    Java中List集合对象去重及按属性去重的8种方法

    主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下

    如何去掉list集合中重复的元素?.docx

    操作例子如下,创建一个实体对象PenBean,代码如下: /** * 笔实体 */ public class PenBean { /**类型*/ private String type; /**颜色*/ private String color; //... 省略 setter 和 getter public ...

    Java中对List去重 Stream去重的解决方法

    主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下

    vue中对象数组去重的实现

    主要介绍了vue中对象数组去重的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    List集合多个复杂字段判断去重的案例

    今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    Dbutils项目实例

    ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map...

    Java面试宝典2010版

    这两行代码执行后,原始的String对象中的内容到底变了没有? 32、是否可以继承String类? 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 34、String 和StringBuffer的区别 35...

    python入门到高级全栈工程师培训 第3期 附课件代码

    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 重复被观察数据   *...

    超级有影响力霸气的Java面试题大全文档

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    ImproveTaisha

    2.本软件得到的太傻单词类反列表有6000多个类反,可以用improvetaisha中的[Omit English Dup.]工具去除重复至约3000多个类反。 3.由本软件制作的单词列表,在[Ascii Art]中用[open a file]打开即可使用。

    利用python中集合的唯一性实现去重

    集合内的数据对象都是唯一的(不能重复)  3.集合是无序的存储结构,集合内的数据没有先后关系  4.集合是可迭代对象  5.集合相当于是只有键没有值得字典(键就是集合中的数据)  6.集合内的元素是不可变的 好了,集合...

    QUALCOMM平台BUIW开发文档

     对象中还创建其它对象 98  内存 99  应用检查内存 99  对象需要检查内存 99  对象示例 99  应用程序和对象创建前 100  应用创建了对象后 100  把所有窗口都释放 100  先释放对象 100  释放函数...

    java 面试题 总结

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

Global site tag (gtag.js) - Google Analytics