it-swarm.com.de

Wie deklariert man ein String-Array [] mit unbekannter Größe (Java)

Ich möchte, dass mein String[] array; statisch ist, aber ich weiß immer noch nicht, wie groß er ist.

Gibt es eine Möglichkeit, ein String-Array mit unbekannter Größe zu deklarieren? Soweit möglich möchte ich ArrayList nicht verwenden

5
tin

Sie müssen die Array-Größe nicht kennen, wenn Sie deklarieren es

String[] myArray;

sie müssen jedoch die Größe kennen, wenn Sie initialisieren it (weil Java Virtual Machine einen fortlaufenden Speicherplatz für ein Array im Voraus reservieren muss):

myArray = new String[256];

Wenn Sie nicht wissen, wie groß die Größe sein muss, wenn Sie sie initialisieren, benötigen Sie einen List<String>, oder Sie werden gezwungen, Ihre eigene Implementierung davon vorzunehmen (was fast sicher eine schlechtere Option ist).

15
Jiri Tousek

Nein, es muss deklariert werden und muss daher eine Länge haben, bevor Elemente darin gesetzt werden können.

Wenn Sie die Größe eines Arrays ändern möchten, müssen Sie Folgendes tun: Ein Array erweitern?

3
steveman
String [] array = new String[1];

es wird später nach der Initialisierung mit einem n-Element eines realen Arrays Müll gesammelt.

array = new String[n];

natürlich hat dies eine Abnahme der Leistung zur Folge, sollte aber unwichtig sein, es sei denn, Sie wiederholen dieselbe für viele verschiedene Arrays.

Die Verwendung von Java.util.ArrayList oder LinkedList ist die übliche Vorgehensweise. Mit Arrays ist das nicht möglich wie ich weiß.

Beispiel:

Liste unindexedVectors = new ArrayList ();

unindexedVectors.add (2.22f);

unindexedVectors.get (2);

1
Vaibhav Walke

Die list ist besser für die Manipulation eines "Arrays", dessen Länge Sie nicht kennen. 

1
MiOnIs

Ich entschuldige mich bei den Neinsagern, das geht leicht.

import Java.util.Random;

public class Roll_2 {
static Random random = new Random();

public static void main(String[] args) {
int[] variableArray1 = init(random.nextInt(9)); // random size
int[] variableArray2 = init(random.nextInt(9)); // random size
int[] variableArray3 = init(random.nextInt(9)); // random size

randomaize(variableArray1); // randomize elements
randomaize(variableArray2); // randomize elements
randomaize(variableArray3); // randomize elements

print(variableArray1);  // print final
print(variableArray2);  // print final
print(variableArray3);  // print final
}
private static int[] init(int x) {
int[] arr = new int[x];
return arr;
}
private static void print(int[] body) {
System.out.print("[");
for (int i=0;i<body.length;i++) {
System.out.print(body[i]);
if (i<body.length-1) System.out.print(" ");
}
System.out.println("]");
}
private static void randomaize(int[] body) {
for (int i=0;i<body.length;i++) {
body[i] = random.nextInt(9);
}
}
}

Beispiellauf 1: [1 7 2] [5 2 8 6 8 3 0 8] []

Probelauf 2: [2 5 6 8 0 7 0 6] [0 0 1] [2 1 2 1 6]

Probelauf 3: [8 3 3] [7] [1 3 7 3 1 2]

0
Ray Mulgrew