2012-12-31 12 views
55

Eventuali duplicati:
how to add new elements to a String[] array?aggiungi stringa in array di String

Sono nuovo in Java quindi ho bisogno di poco aiuto

ho

String [] scripts = new String [] ("test3","test4","test5"); 

e Voglio aggiungere una nuova piega gs (stringa1, stringa2) a questo array (script) per gli esempi

String string1= " test1" 
String string2 = "test2" 

voglio aggiungere la nuova stringa non nella init, ma in seguito fase

Come posso farlo?

+2

È possibile utilizzare 'List' (come' ArrayList')? Oppure puoi creare un nuovo array con dimensioni maggiori, eseguire il loop nel vecchio array add da index = 2. Quindi aggiungere nuovi elementi all'indice '0' e' 1'. – Nishant

+1

Quindi non sei nuovo a SO, fai una ricerca prima di pubblicare una domanda per evitare downvote. – vels4j

+0

Vai per 'java.util.Collections' se hai bisogno di elementi da modificare dinamicamente. mappare il requisito e il tipo di raccolte disponibili. come sopra, come suggerito, è preferibile 'ArrayList'. – VinayVeluri

risposta

87

Non è possibile ridimensionare un array in java.

Una volta dichiarata la dimensione della matrice, rimane fissa.

Invece è possibile utilizzare ArrayList con dimensioni dinamiche, il che significa che non è necessario preoccuparsi delle sue dimensioni. Se il tuo elenco di array non è abbastanza grande da contenere nuovi valori, verrà ridimensionato automaticamente.

ArrayList<String> ar = new ArrayList<String>(); 
String s1 ="Test1"; 
String s2 ="Test2"; 
String s3 ="Test3"; 
ar.add(s1); 
ar.add(s2); 
ar.add(s3); 

String s4 ="Test4"; 
ar.add(s4); 
+0

Assicurarsi di importare anche java.util.ArrayList – wizlog

12

In primo luogo, questo codice qui,

string [] scripts = new String [] ("test3","test4","test5"); 

dovrebbe essere

String[] scripts = new String [] {"test3","test4","test5"}; 

Si prega di leggere questo tutorial su Arrays

In secondo luogo,

Gli array sono fissati Siz e, quindi non è possibile aggiungere nuove stringhe all'array sopra. Si può sostituire i valori esistenti

scripts[0] = string1; 

(o)

creare un array con dimensioni quindi continuare ad aggiungere elementi fino a che non è pieno.

Se si desidera utilizzare array ridimensionabili, prendere in considerazione l'utilizzo di ArrayList.

6

che avrebbe dovuto scrivere qualche metodo per creare un array temporaneo e quindi copiarlo come

public String[] increaseArray(String[] theArray, int increaseBy) 
{ 
    int i = theArray.length; 
    int n = ++i; 
    String[] newArray = new String[n]; 
    for(int cnt=0;cnt<theArray.length;cnt++) 
    { 
     newArray[cnt] = theArray[cnt]; 
    } 
    return newArray; 
} 

o The ArrayList sarebbe utile per risolvere il problema.

+1

+1 buono. Inoltre, è possibile utilizzare System.arrayCopy – vels4j

+0

È possibile utilizzare Arrays.copyOf() per ottenere lo stesso risultato. –

2

Poiché gli array Java contengono un numero fisso di valori, in questo caso è necessario creare un nuovo array con una lunghezza di 5. Una soluzione migliore sarebbe quella di utilizzare un ArrayList e semplicemente aggiungere stringhe alla matrice.

Esempio:

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test3"); 
scripts.add("test4"); 
scripts.add("test5"); 

// Then later you can add more Strings to the ArrayList 
scripts.add("test1"); 
scripts.add("test2"); 
6

Come molti di risposta suggerendo soluzione migliore è quella di utilizzare ArrayList. La dimensione di ArrayList non è fissa ed è facilmente gestibile.

Implementazione di array ridimensionabile dell'interfaccia Elenco. Implementa tutte le operazioni di lista opzionali e consente tutti gli elementi, incluso il nulla. Oltre a implementare l'interfaccia Elenco, questa classe fornisce metodi per manipolare le dimensioni dell'array utilizzato internamente per memorizzare l'elenco.

Ogni istanza ArrayList ha una capacità. La capacità è la dimensione della matrice utilizzata per memorizzare gli elementi nell'elenco. È sempre grande almeno quanto la dimensione dell'elenco. Quando gli elementi vengono aggiunti a un ArrayList, la sua capacità aumenta automaticamente.

Si noti che questa implementazione non è sincronizzata.

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test1"); 
scripts.add("test2"); 
scripts.add("test3");