比较两个arraylist

use*_*159 5 java comparison arraylist

我有两个Arraylists:

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");
Run Code Online (Sandbox Code Playgroud)

我如何比较这两个arraylists并添加到新的arraylist(a3)中,如果a1存在于a1中则为1,如果不存在则为0,因此结果将在下面为arraylist a3?

a3[0] = 0
a3[1] = 0
a3[2] = 0
a3[3] = 1
a3[4] = 0
a3[5] = 1
a3[6] = 1
Run Code Online (Sandbox Code Playgroud)

提前致谢

dac*_*cwe 11

首先,我建议你使用泛型.其次,因为a2可能是一个Set代替.第三点,你可能希望从改变String到Integer(因为它们都是整数).

但是对于你的例子,这是一种方法:

ArrayList<Integer> a3 = new ArrayList<Integer>();               
for (String a : a1)
    a3.add(a2.contains(a) ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)

完整示例(带a HashSet和Integer类型):

public static void main(String... args) {
    List<Integer> a1 = Arrays.asList(5, 10, 20, 50, 100, 500, 1000);
    Set<Integer>  a2 = new HashSet<Integer>(Arrays.asList(50, 500, 1000));

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

    for (Integer a : a1)
        a3.add(a2.contains(a) ? 1 : 0);

    System.out.println(a3);
}
Run Code Online (Sandbox Code Playgroud)

输出:

[0, 0, 0, 1, 0, 1, 1]
Run Code Online (Sandbox Code Playgroud)