2012-10-12 17 views
44

मैं एक स्ट्रिंग सरणी को गीलेलैंड वर्ग के निर्माता के लिए एक तर्क के रूप में पास करने की कोशिश कर रहा हूं; मुझे समझ में नहीं आता है कि स्ट्रिंग सरणी के तत्व स्ट्रिंग सरणी सूची में कैसे जोड़ना है।स्ट्रिंग सरणी सूची में स्ट्रिंग सरणी के तत्व कैसे जोड़ें?

import java.util.ArrayList; 

public class Wetland { 
    private String name; 
    private ArrayList<String> species; 
    public Wetland(String name, String[] speciesArr) { 
     this.name = name; 
     for (int i = 0; i < speciesArr.length; i++) { 
      species.add(speciesArr[i]); 
     } 
    } 
} 

उत्तर

83

आप पहले से ही उस के लिए अंतर्निहित विधि: -

List<String> species = Arrays.asList(speciesArr); 

नोट: - आप List<String> species नहीं ArrayList<String> species उपयोग करना चाहिए।

Arrays.asList एक अलग ArrayList ->java.util.Arrays.ArrayList देता है जिसे java.util.ArrayList पर टाइपकास्ट नहीं किया जा सकता है।

फिर आपको addAll विधि का उपयोग करना होगा, जो इतना अच्छा नहीं है। तो बस का उपयोग List<String>

नोट: - सूची Arrays.asList द्वारा लौटाए गए एक निश्चित आकार सूची है। यदि आप सूची में कुछ जोड़ना चाहते हैं, तो आपको इसमें एक और सूची बनाना होगा, और इसमें तत्व जोड़ने के लिए addAll का उपयोग करना होगा। तो, तो आप बेहतर नीचे के रूप में 2 तरीके के साथ जाना होगा: -

String[] arr = new String[1]; 
    arr[0] = "rohit"; 
    List<String> newList = Arrays.asList(arr); 

    // Will throw `UnsupportedOperationException 
    // newList.add("jain"); // Can't do this. 

    ArrayList<String> updatableList = new ArrayList<String>(); 

    updatableList.addAll(newList); 

    updatableList.add("jain"); // OK this is fine. 

    System.out.println(newList);  // Prints [rohit] 
    System.out.println(updatableList); //Prints [rohit, jain] 
+2

@rorrohprog .. यह ऑब्जेक्ट नहीं देता है, लेकिन एक सूची , जहां टी आपके द्वारा पारित सरणी का प्रकार है। Http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList (टी ...) –

+1

@rorrohprog देखें। मुझे लगता है कि आपको इस कोड को आजमा देना चाहिए। और मैंने जो दस्तावेज़ दिए हैं उन्हें देखें .. –

+0

@rorrohprog। अब मुझे लगता है कि मेरी पोस्ट बहुत स्पष्ट है। –

5

Arrays.asList ऐरे और संग्रह ढांचे के बीच पुल है और यह ऐरे द्वारा समर्थित एक निश्चित आकार सूची देता है।

species = Arrays.asList(speciesArr); 
+1

Arrays.asList एक ऑब्जेक्ट देता है! –

+1

यह 'सूची ' –

+1

@rorrohprog लौटाता है यदि आप दस्तावेज़ों को पढ़ते हैं http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList%28T...%29 यह कहते हैं कि यह 'सूची ' – luketorjussen

0

उपयोग asList() विधि। जावा डॉक्टर से asList

List<String> species = Arrays.asList(speciesArr); 
+0

Arrays.asList एक ऑब्जेक्ट देता है! duh –

+0

@rorrohprog एक नज़र डालें http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList (टी ...) –

+0

हाँ मैंने पहले ही किया था। –

7

आप अपने ArrayList आइटम जोड़ने के लिए प्रयास करने से पहले का दृष्टांत चाहिए:

private List<String> species = new ArrayList<String>(); 
+0

वास्तव में सवाल नहीं पूछ रहा है। – luketorjussen

+1

ठीक है, लेकिन यह मुख्य बात है जो गलत हो गई है। –

1

Arrays.asList काम समारोह जावा में उपलब्ध सूची या संग्रह करने के लिए एक सरणी चर कन्वर्ट करने के लिए है।

package com.stackoverflow.works; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class Wetland { 
    private String name; 
    private List<String> species = new ArrayList<String>(); 

    public Wetland(String name, String[] speciesArr) { 
     this.name = name; 
     this.species = Arrays.asList(speciesArr); 
    } 

    public void display() { 
     System.out.println("Name: " + name); 
     System.out.println("Elements in the List"); 
     System.out.println("********************"); 
     for (String string : species) { 
      System.out.println(string); 
     } 
    } 

    /* 
    * @Description: Method to test your code 
    */ 
    public static void main(String[] args) { 
     String name = "Colors"; 
     String speciesArr[] = new String [] {"red", "blue", "green"}; 
     Wetland wetland = new Wetland(name, speciesArr); 
     wetland.display(); 
    } 

} 

आउटपुट:: खड़े तहत बेहतर करने के लिए नीचे दिए गए उदाहरण पर विचार

enter image description here

13

मैं इस पसंद करते हैं,

List<String> temp = Arrays.asList(speciesArr); 
species.addAll(temp); 

कारण Arrays.asList है() विधि होगा एक निश्चित आकार की सूची बनाएँ। तो यदि आप इसे सीधे प्रजातियों में संग्रहीत करते हैं तो आप कोई और तत्व जोड़ने में सक्षम नहीं होंगे, फिर भी यह केवल पढ़ने के लिए नहीं है। आप निश्चित रूप से अपने आइटम संपादित कर सकते हैं। तो इसे अस्थायी सूची में ले जाएं। इस के लिए

वैकल्पिक

Collections.addAll(species, speciesArr); 

इस मामले में, आप जोड़ सकते हैं, संपादित करें, अपने आइटम हटा, है।

1
ArrayList<String> arraylist= new ArrayList<String>(); 

arraylist.addAll(Arrays.asList("mp3 radio", "presvlake", "dizalica", "sijelice", "brisaci farova", "neonke", "ratkape", "kuka", "trokut")); 
+0

यह काम कर रहा है .... –

7

सोचा मैं मिश्रण करने के लिए यह एक जोड़ देंगे:

Collections.addAll(result, preprocessor.preprocess(lines)); 

यह परिवर्तन है कि खुफिया की सिफारिश की गई है।

javadocs से

:

Adds all of the specified elements to the specified collection. 
 
Elements to be added may be specified individually or as an array. 
 
The behavior of this convenience method is identical to that of 
 
<tt>c.addAll(Arrays.asList(elements))</tt>, but this method is likely 
 
to run significantly faster under most implementations. 
 
    
 
When elements are specified individually, this method provides a 
 
convenient way to add a few elements to an existing collection: 
 
<pre> 
 
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon"); 
 
</pre>

2

जावा 8 में, इस के लिए वाक्यविन्यास बहुत सरल और इस बदलाव संक्षेप पूरा करने के लिए इस्तेमाल किया जा सकता।

ध्यान दें, आपको कंक्रीट कार्यान्वयन से अपने क्षेत्र को List इंटरफ़ेस में आसानी से काम करने के लिए बदलने की आवश्यकता होगी।

public class Wetland { 
    private String name; 
    private List<String> species; 
    public Wetland(String name, String[] speciesArr) { 
     this.name = name; 
     species = Arrays.stream(speciesArr) 
         .collect(Collectors.toList()); 
    } 
} 
-1
public class duplicateArrayList { 


    ArrayList al = new ArrayList(); 
    public duplicateArrayList(Object[] obj) { 

     for (int i = 0; i < obj.length; i++) { 

      al.add(obj[i]); 
     } 

     Iterator iter = al.iterator(); 
     while(iter.hasNext()){ 

      System.out.print(" "+iter.next()); 
     } 
    } 

    public static void main(String[] args) { 


    String[] str = {"A","B","C","D"}; 

    duplicateArrayList dd = new duplicateArrayList(str); 

    } 

} 
0

Arrays.asList() विधि बस List प्रकार

char [] arr = { 'c','a','t'};  
ArrayList<Character> chars = new ArrayList<Character>(); 

सूची में सरणी जोड़ने के लिए, पहले परिवर्तित सूची और फिर फोन addAll

List arrList = Arrays.asList(arr); 
chars.addAll(arrList); 

निम्न पंक्ति रिटर्न संकलक त्रुटि

का कारण बन जाएगा
chars.addAll(Arrays.asList(arr)); 
संबंधित मुद्दे