2011-08-24 24 views
5

मैं दो Arraylists है:की तुलना दो 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 के साथ नए ArrayList (A3) में जोड़ने a2 a1 में मौजूद हैं और 0 यदि मौजूद नहीं कर सकते, तो परिणाम होगा सरणीसूची ए 3 के लिए नीचे?

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

पूर्ण उदाहरण (क 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); 
} 

आउटपुट:

[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 ArrayList में मौजूद है की जाँच कर सकते हैं या नहीं और उसके अनुसार की तरह 3 सूची तत्व जोड़:

for(String temp: a1) 
{ 
    if(a2.contains(temp)) 
    { 
     a3.add(1); 
    } 
    else 
    { 
    a3.add(0); 
    } 
} 
संबंधित मुद्दे