`
xuedong
  • 浏览: 296851 次
  • 性别: 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`集合中去除重复对象的实现,特别是针对对象类型的集合。 首先,我们要明确一点:在Java中,当我们说两个对象是重复的,通常是指它们的属性值相等,而不是指它们在内存中的引用地址...

    java中List对象列表实现去重或取出及排序的方法

    Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...

    两个list比较 取不同的对象

    2. **比较与去除重复项**: - 使用双重循环来逐个比较两个列表中的元素。 - 如果发现两个列表中有相同的`Student`对象,则从第一个列表中移除该对象。 - 移除后需要更新循环变量,以避免遗漏元素。 3. **使用`...

    List列表拒绝添加重复信息

    将List转换为Set,可以自动去除重复项。例如: ```python my_list = [1, 2, 3, 2, 4, 3] my_set = set(my_list) ``` 在这个例子中,`my_set`将只包含`{1, 2, 3, 4}`,因为重复的2和3已被移除。 如果我们仍然需要...

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

    例如,我们可以创建一个泛型方法,接受一个包含待去重数据的集合作为输入,利用枚举遍历这个集合,并将每个元素添加到一个HashSet中,HashSet在插入时会自动检查并排除重复项。由于HashSet的查找和插入操作具有O(1)...

    Java中ArrayList去除重复元素(包括字符串和自定义对象)

    Java中ArrayList去除重复元素(包括字符串和自定义对象) 在Java中,ArrayList是一种常用的集合类,但是在实际应用中,我们经常会遇到重复元素的问题,例如字符串或自定义对象的重复元素。在本文中,我们将介绍如何...

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

    Set接口下的集合类如HashSet不存储重复元素,可以方便地去除列表中的重复项。将List转换为Set,然后再转换回List即可: ```java List&lt;PenBean&gt; uniquePenBeanList = new ArrayList(new HashSet(penBeanList)); ``` ...

    Java判断List中有无重复元素的方法

    由于HashSet不允许重复,如果有重复元素,它们在转换过程中会被自动去除。接着,我们比较list的大小和转换后的HashSet的大小。如果两者大小不同,说明原始list中存在重复元素,`isRepeat`变量将被设置为`true`。 ...

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

    在Java编程中,当我们处理包含重复元素的List时,有时需要去除其中的重复项。以下文章将详细介绍8种针对List集合对象去重的方法,包括基于对象整体以及按特定属性进行去重。 ### 一、对象整体去重 #### 1. 使用Set...

    文本去重(去除数组中重复项)

    在示例代码中,首先创建一个`TreeSet`对象,然后遍历字符串数组并将每个元素添加到`Set`中。由于`Set`不允许重复,所以重复的字符串会被自动忽略。最后,将`Set`转换回字符串数组并打印结果。`TreeSet`保证了元素的...

    SharePoint的列表中某列去除重复值的一种方法

    本文将介绍一种去除SharePoint列表中特定列重复值的方法,主要涉及`SPList`对象的`GetDistinctFieldValues`方法。 首先,我们需要获取到目标列表的实例,例如`voteBoxList`,并明确我们要处理的列名,例如“得票人...

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

    List集合多个复杂字段判断去重的案例 在 Java 编程中,List 集合是我们常用的数据结构之一。当我们需要对 List 集合...同时,我们也可以使用 contains 方法来检查对象是否已经存在于集合中,以便避免重复对象的出现。

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

    List去重是Java中的一种常见操作,对于List中的重复元素进行去重,从而使得List中的元素变得独一无二。 Java中提供了多种方法来实现List去重,下面我们将对其中的一些方法进行介绍。 使用HashSet去重 HashSet是一...

    java 实现多个list 合并成一个去掉重复的案例

    在Java编程中,合并多个List并去除重复元素是一项常见的任务,尤其在处理数据集合时。在给定的案例中,我们看到两种不同的方法来完成这个任务。首先,让我们详细讲解这两种方法。 ### 1. 使用`addAll()`和`...

    JS数组中对象去重操作示例

    - 检查当前对象的`magicId`,如果它还没有在`full`对象中出现过,继续检查`id`。 - 如果`id`也没有出现过,创建一个新的对象,复制当前对象的`id`和`magicId`到新对象,并将新对象添加到`result`数组中。 - 将...

    java List去掉重复元素的几种方式(小结)

    _java List_是一种常用的数据集合,在实际应用中,我们经常需要去掉_List_中的重复元素以提高数据的准确性和可读性。本文将介绍_java List_去掉重复元素的几种方式,包括使用_LinkedHashSet_、_HashSet_、_java8_新...

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    java去除集合中重复元素示例分享 java去除重复

    然后,我们定义了一个singleElement方法,该方法将ArrayList对象作为参数,并返回一个新的ArrayList对象,该对象中不包含重复元素。 在singleElement方法中,我们使用了Iterator对象来迭代原始ArrayList对象中的...

Global site tag (gtag.js) - Google Analytics