2012-12-31 18 views
55

Powiel możliwe:
how to add new elements to a String[] array?dodać ciąg do tablicy ciągów

Jestem nowy w Javie, więc trzeba trochę pomóc

mam

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

i Chcę dodać nowy strin gs (łańcuch1, łańcuch2) do tej tablicy (skrypty) dla przykładów

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

Chcę dodać nowy łańcuch nie init ale w późniejszej fazie

Jak mogę to zrobić?

+2

Czy można użyć 'List' (jak' ArrayList')? Możesz też utworzyć nową tablicę o większym rozmiarze, pętlę w starej tablicy dodać z indeksu = 2. Następnie dodaj nowe elementy w indeksie '0' i' 1'. – Nishant

+1

Nie jesteś nowicjuszem w SO, szukaj przed opublikowaniem pytania, aby uniknąć downvote. – vels4j

+0

Przejdź do 'java.util.Collections', jeśli potrzebujesz dynamicznie modyfikować elementy. zmapuj wymaganie i dostępny typ kolekcji. powyżej, jak wszyscy sugerowali, preferowana jest "ArrayList". – VinayVeluri

Odpowiedz

87

Nie można zmienić rozmiaru tablicy w języku Java.

Po zadeklarowaniu wielkości tablicy pozostaje ona stała.

Zamiast tego można użyć formatu ArrayList, który ma rozmiar dynamiczny, co oznacza, że ​​nie trzeba się martwić o jego rozmiar. Jeśli twoja lista tablic nie jest wystarczająco duża, aby pomieścić nowe wartości, zostanie automatycznie zmieniona.

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

Należy również zaimportować wartość java.util.ArrayList – wizlog

12

Po pierwsze, to kod tutaj,

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

powinny być

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

Proszę przeczytać ten poradnik na Arrays

drugie,

macierze są stałe chowania rozmiaru e, więc nie można dodawać nowych łańcuchów do powyższej tablicy. Można zastąpić istniejące wartości

scripts[0] = string1; 

(OR)

utworzyć tablicę z wielkości następnie kontynuować dodawanie elementów do to jest pełna.

Jeśli chcesz zmienić rozmiar macierzy, rozważ użycie ArrayList.

6

trzeba by spisać jakąś metodę, aby utworzyć tymczasową tablicę, a następnie skopiować go jak

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

Albo ArrayList byłoby pomocne, aby rozwiązać swój problem.

+1

+1. Również można użyć System.arrayCopy – vels4j

+0

Możesz użyć Arrays.copyOf(), aby osiągnąć to samo. –

2

Ponieważ tablice Java mają ustaloną liczbę wartości, należy w tym przypadku utworzyć nową tablicę o długości 5. Lepszym rozwiązaniem byłoby użycie ciągów do macierzy w postaci ciągów znaków: i po prostu .

przykład:

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

Ponieważ wiele odpowiedzi sugerujące lepszym rozwiązaniem jest zastosowanie ArrayList. Rozmiar ArrayList nie jest ustalony i jest łatwy w zarządzaniu.

Jest to implementacja tablic zmiennopozycyjnych w interfejsie listy. Implementuje wszystkie opcjonalne operacje na liście i zezwala na wszystkie elementy, w tym null. Oprócz implementacji interfejsu List, ta klasa udostępnia metody manipulowania rozmiarem tablicy używanej wewnętrznie do przechowywania listy.

Każda instancja obiektu ArrayList ma pojemność. Pojemność to rozmiar tablicy używanej do przechowywania elementów na liście. Jest zawsze co najmniej tak duży, jak rozmiar listy. Gdy elementy są dodawane do tablicy ArrayList, jej pojemność rośnie automatycznie.

Należy zauważyć, że ta implementacja nie jest zsynchronizowana.

Powiązane problemy