Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 比较两个数组列表_Java_Comparison_Arraylist - Fatal编程技术网

Java 比较两个数组列表

Java 比较两个数组列表,java,comparison,arraylist,Java,Comparison,Arraylist,我有两个ArrayList: ArrayList a1 = new ArrayList(); a1.add("5"); a1.add("10"); a1.add("20"); a1.add("50"); a1.add("100"); a1.add("500"); a1.add("1000"); ArrayList a2 = new ArrayList(); a2.add("50"); a2.add("500"); a2.add("1000"); 如果a1中存在a2,如何比较这两个arrayl

我有两个ArrayList:

ArrayList a1 = new ArrayList();
a1.add("5");
a1.add("10");
a1.add("20");
a1.add("50");
a1.add("100");
a1.add("500");
a1.add("1000");

ArrayList a2 = new ArrayList();
a2.add("50");
a2.add("500");
a2.add("1000");
如果a1中存在a2,如何比较这两个arraylist并将其添加到新的arraylist(a3)中?如果a1中不存在a2,如何将其添加到新的arraylist(a3)中

a3[0] = 0
a3[1] = 0
a3[2] = 0
a3[3] = 1
a3[4] = 0
a3[5] = 1
a3[6] = 1

提前谢谢

首先,我建议你。第二,对于
a2
,可以改为a。第三,您可能希望从
String
更改为
Integer
(因为它们都是整数)

但对于您的示例,这是一种方法:

ArrayList<Integer> a3 = new ArrayList<Integer>();               
for (String a : a1)
    a3.add(a2.contains(a) ? 1 : 0);
输出:

[0, 0, 0, 1, 0, 1, 1]
[0, 0, 0, 1, 0, 1, 1]
伪代码

Check both a1 and a2 for length. say a1 is longest
a3 = new arraylist(a1.length) 
for(i=0 to a2.length)
 if(a1.contains(a2.get(i))
  a3.get(i)++;
大概是这样的:

ArrayList<Integer> a3 = new ArrayList<Integer>();

for (String v : a1) {
    if (a2.contains(v)) {
        a3.add(1);
    } else {
        a3.add(0);
    }
}
ArrayList a3=新的ArrayList();
用于(字符串v:a1){
如果(a2.包含(v)){
a3.加入第(1)款;
}否则{
a3.加入(0);
}
}
这样就可以了

请注意,您的问题指定了
int[]
作为输出类型,这不是我会选择的-列表可能会更好,但是这个答案符合您的要求,与我迄今为止看到的所有其他答案不同

public static void main(String[] args) {
    ArrayList<String> a1 = new ArrayList<String>();
    a1.add("5");
    a1.add("10");
    a1.add("20");
    a1.add("50");
    a1.add("100");
    a1.add("500");
    a1.add("1000");

    ArrayList<String> a2 = new ArrayList<String>();
    a2.add("50");
    a2.add("500");
    a2.add("1000");

    int[] matches = new int[a1.size()];

    int i = 0;
    for (String s : a1)
        matches[i++] = a2.contains(s) ? 1 : 0;

    System.out.println(Arrays.toString(matches));
}
您可以使用ArrayList的
contains(Object o)方法检查元素是否存在于第二个ArrayList中,并相应地将元素添加到第三个列表中,如:

for(String temp: a1)
{
   if(a2.contains(temp)) 
   {
      a3.add(1);
   }
   else
   {
     a3.add(0);
   }
}
for(String temp: a1)
{
   if(a2.contains(temp)) 
   {
      a3.add(1);
   }
   else
   {
     a3.add(0);
   }
}