2011-08-24 112 views
5

我有兩個的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"); 

我如何可以比較這個兩分的ArrayLists,並與1,如果A2在A1存在和0,如果不存在添加到新的ArrayList(A3),那麼結果會以下爲arraylist a3?

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

在此先感謝

回答

11

首先,我會建議你use generics。其次,對於a2而言可以是Set。第三,你可能想從String更改爲Integer(因爲它們都是整數)。

但對於你的例子,這是一個辦法做到這一點:

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

完整的示例(帶HashSetInteger型):

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); 
} 

輸出:

[0, 0, 0, 1, 0, 1, 1] 
0

Psuedo cod Ë

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)++; 
0

事情是這樣的:

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

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

這將做到這一點。

請注意,您的問題指定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)); 
} 

輸出:

[0, 0, 0, 1, 0, 1, 1] 
1

您可以使用contains(Object o) method of ArrayList來檢查元素存在於第2個數組列表與否,並相應的元素添加到列表3,如:

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