Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中的多个ArrayList中查找唯一元素_Java_Set_Unique - Fatal编程技术网

如何在Java中的多个ArrayList中查找唯一元素

如何在Java中的多个ArrayList中查找唯一元素,java,set,unique,Java,Set,Unique,我有多个整数数组列表,其中包含一些重复的元素。我想从他们那里得到独特的元素。但是怎么做呢? java.util.ArrayList.removeAll()不能完全满足我的需要。请参阅下面的测试代码- ArrayList<Integer> d = new ArrayList<Integer>(); d.add(2); d.add(4); d.add(5); d.add(7); d.add(8); d.add(9); ArrayList<Integer> e =

我有多个
整数数组列表
,其中包含一些重复的元素。我想从他们那里得到独特的元素。但是怎么做呢?
java.util.ArrayList.removeAll()
不能完全满足我的需要。请参阅下面的测试代码-

ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);

ArrayList<Integer> e = new ArrayList<Integer>();
e.add(3);
e.add(7);

d.removeAll(e);

for (int t : d) {
    System.out.print(t+", ");
}
ArrayList d=new ArrayList();
d、 增加(2);
d、 增加(4);
d、 增加(5);
d、 增加(7);
d、 增加(8);
d、 增加(9);
ArrayList e=新的ArrayList();
e、 增加(3);
e、 增加(7);
d、 removeAll(e);
for(int t:d){
系统输出打印(t+“,”);
}
在输出中,我得到
2,4,5,8,9,
。显然,
3
缺失。为了简单起见,我在这里只使用了两个
ArrayList
,但在我的代码中,我有两个以上的
ArrayList

如何在Java中的多个ArrayList中找到唯一的元素

列表创建
集合
。该集合将不包含重复的对象:

List<Integer> lstNumbers = new ArrayList<Integer>();
//fill the list of integers...
Set<Integer> setNumbers = new HashSet<Integer>(lstNumbers);
//the set will contain no duplicate values...
for (int t : setNumbers) {
    System.out.print(t+", ");
}

此外,作为最佳实践,尝试编程到接口(列表、集合等),而不是类实现(ArrayList、HashSet),如下所示:

使用
java.util.HashSet

Set<Integer> uniqueEntries = new HashSet<Integer>();
for(all lists)
     uniqueEntries.addAll(list);
ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);

d.add(3);
d.add(7);

// this will remove all duplicates
Set setNew = new HashSet(d);

System.out.print(setNew);
Set uniqueEntries=new HashSet();
对于(所有列表)
uniqueEntries.addAll(列表);
现在,set uniqueEntries将包含所有唯一的整数值。

使用
set

Set<Integer> uniqueEntries = new HashSet<Integer>();
for(all lists)
     uniqueEntries.addAll(list);
ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);

d.add(3);
d.add(7);

// this will remove all duplicates
Set setNew = new HashSet(d);

System.out.print(setNew);
ArrayList d=new ArrayList();
d、 增加(2);
d、 增加(4);
d、 增加(5);
d、 增加(7);
d、 增加(8);
d、 增加(9);
d、 增加(3);
d、 增加(7);
//这将删除所有重复项
Set setNew=新哈希集(d);
系统输出打印(setNew);
ArrayList d=new ArrayList();
d、 增加(2);
d、 增加(4);
d、 增加(5);
d、 增加(7);
d、 增加(8);
d、 增加(9);
ArrayList e=新的ArrayList();
e、 增加(3);
e、 增加(7);
列表温度=新阵列列表(d);
System.out.println(“d-->”+d);
System.out.println(“e-->”+e);
d、 removeAll(e);
e、 移除所有(临时);
d、 addAll(e);
System.out.println(“d-->”+d);
/*ArrayList唯一和重复记录打印*/
导入java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
ArrayList d=新的ArrayList();
d、 增加(2);
d、 增加(4);
d、 增加(5);
d、 增加(7);
d、 增加(8);
d、 增加(9);
ArrayList e=新的ArrayList();
e、 增加(3);
e、 增加(7);
列表温度=新阵列列表(e);
System.out.println(“d-->”+d);
System.out.println(“e-->”+e);
e、 removeAll(d);
温度移除所有(e);
System.out.println(“e(唯一)-->”+e);
系统输出打印项次(“温度(副本)-->”+温度);
}
}

您可以更简单地执行此操作

ArrayList first=新的ArrayList;ArrayList秒 =新阵列列表

为了找到独特的元素。。
第一,保留(第二)

首先,我需要添加所有的
ArrayList
,然后我必须创建
HashSet
。我说的对吗?@RaviJoshi是的,首先用重复的元素填充
数组列表
,然后为链接@LuiggiMendoza创建
+1。。很高兴你根据我的评论更新了你的答案。我猜你从一开始就错过了这一点question@Muklas是的,这对
String
s很好,基本上是因为
HashSet
使用
hashCode
equals
方法,String实现了它。您也可以使用自己的类来检查唯一的结果,只要您使用
HashSet
,并且您的类也实现了这些方法。根据您的代码,您得到的输出是显而易见的。我的理解是,
7
是常见的,只有7个应该删除,3个应该添加。。。正当然后使用
设置
。它不会添加重复项。。。这样,您将拥有所有唯一的列表…您可以使用
集合作为
HashSet
构造函数中的参数。是的,我们可以。但他不是只有一个arraylist。他需要添加多个数组列表。因此,构造函数无法完成全部任务,因为他必须遍历所有ArrayList的整个列表。我最喜欢。你真厉害,伙计。非常感谢。我现在明白了。
/* ArrayList Unique & Duplicate Records Print */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
ArrayList<Integer> d = new ArrayList<Integer>();
        d.add(2);
        d.add(4);
        d.add(5);
        d.add(7);
        d.add(8);
        d.add(9);

        ArrayList<Integer> e = new ArrayList<Integer>();
        e.add(3);
        e.add(7);

        List<Integer> temp = new ArrayList<Integer>(e);

        System.out.println("d --> " + d);
        System.out.println("e --> " + e);

        e.removeAll(d);
        temp.removeAll(e);

        System.out.println("e (unique)--> " + e);
        System.out.println("temp (duplicate) --> " + temp);
    }
}
   first.add("one"); 
   first.add("two");  
   first.add("three"); 
   second.add("two");  
   second.add("three");