2011-08-24 8 views
5

: Ben bu iki Dizi Listeleri karşılaştırın ve mevcut değilse a2 a1 bulunur ve 0 ise 1 ile yeni arraylist (a3) ​​içine eklemek, böylece sonuç olacak nasılkarşılaştırın iki ArrayList İki Dizi Listeleri var

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

arraylist a3 için aşağıda? peşin

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

Teşekkür

cevap

11

Birincisi, use generics sizi tavsiye ediyorum. Ve ikinci olarak, a2 için bunun yerine Set olabilir. Ve üçüncü olarak String'dan Integer'a (hepsi tamsayı olduklarından) geçmek isteyebilirsiniz.

Ama örneğin bu bunu yapmak için bir yoldur:

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

için tam bir örnek (a HashSet ve Integer tip):

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

Çıktı:

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

Psuedo morina Bu gibi e

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

şey:

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

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

Bu yapacaktır. Sorunuzun ı seçmiş olduğu değil ne çıktı türü olarak int[] belirtir

Not - Liste muhtemelen ancak bu cevap size şimdiye kadar gördüğüm her cevap aksine istedi yapar, daha iyi olurdu.

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

Çıktı:

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

Sen gibi 3 eleman eklemek eleman 2 arraylist mevcut olup olmadığını kontrol etmek contains(Object o) method of ArrayList ya da değil ve buna göre kullanabilirsiniz:

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