java 怎样把list中相同的数据找出来

如题所述

  依次处理list的元素list[i],用dup装去重元素,mul装重复元素。先检查dup是否包含元素list[i],如果包含则加入mul中。如果没有则加入dup中。最后mul中就是重复数据,dup中就是去掉重复元素的列表。下面是一个实例,首先生成一个列表list,然后找出重复元素。

public class Duplication
{
    public static void main(String[] args)
    {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 1;i <= 10;i++)
        {
            if(i%3 == 0) continue;
            if(i%2 == 0)
            {
                list.add(i);
                list.add(i);
            }
            else
                list.add(i);
        }
        System.out.println(list);
        
        List<Integer> dup = new ArrayList<Integer>();
        List<Integer> mul = new ArrayList<Integer>();
        for(int a:list)
        {
            if(dup.contains(a))
                mul.add(a);
            else dup.add(a);
        }
        System.out.println(dup);
        System.out.println(mul);
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-19
// 初始化list
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(21);
list.add(1);
list.add(3);
list.add(3);
list.add(3);

// set中存放的是不可重复的元素
HashSet<Integer> set = new HashSet<Integer>();
// 这里存放的是所有重复的元素,如果你只想知道是哪几个数字重复了,不需要知道具体重复了几次,可以用HashSet
List<Integer> repeatElements = new ArrayList<Integer>();

for (int i=0;i<list.size();i++) {
int value = list.get(i);

if (set.contains(value)) {
// 重复元素
repeatElements.add(value);
}
else {
set.add(value);
}
}

// 输出重复的元素
for (int i=0;i<repeatElements.size();i++) {
System.out.println(repeatElements.get(i));
}

本回答被提问者和网友采纳
第2个回答  2019-09-29
java8新特性Stream可以处理:
list.stream().filter(i -> list.stream().filter(i::equals).count()>1).collect(Collectors.toSet());
第3个回答  2020-08-19
Set<String> chnCodes = new HashSet<>();
Set<String> dupCodes = new HashSet<>();
codes.stream().forEach(code-> {
if (chnCodes.contains(code)) {
dupCodes.add(chnCode);
} else {
chnCodes.add(code);
}
});
第4个回答  2014-02-19
上面有一个筛选按钮,你上百度查查,筛选按钮在哪里
相似回答