9 Stimmen

Wie erstellt man ein Array aus Vektoren in Java?

Also, ich möchte ein Array von Vector of Integer in Java.

Wenn ich die

Vector<Integer>[] matrix;
matrix = new Vector<Integer>[100];

Ich kann den Kompilierungsfehler nicht erhalten

kann kein generisches Array von Vector erstellen

Soll ich die

    matrix = new Vector[100];

stattdessen? (die eine Warnung ausgibt)

Oder sollte ich einfach nicht ein Array von Vektoren verwenden und stattdessen Vektor von Vektor verwenden?

Hinweis: Ich möchte keinen Vector< Integer >, sondern einen Vector< Integer >[], um eine Matrix von Integern zu erstellen, ohne Integer[][] zu verwenden.

6voto

x4u Punkte 13497

Java hat einfach keine Möglichkeit, Arrays eines parametrisierten Typs zu erstellen, ohne eine Warnung zu erhalten oder zu unterdrücken. Das Beste, was Sie bekommen können, ist also dies:

@SuppressWarnings("unchecked")
Vector<Integer>[] anArray = (Vector<Integer>[]) new Vector<Integer>[100];

Sie können dieses Problem umgehen, wenn Sie Arrays ganz vermeiden. D.h.:

Vector<Vector<Integer>> list = new Vector<Vector<Integer>>(100);

Oder mit den Sammelarten:

List<List<Integer>> list = new ArrayList<List<Integer>>(100);

3voto

Alfredo Osorio Punkte 10927
Vector<Integer> vector = new Vector<Integer>();

Wenn Sie versuchen, so etwas zu tun:

Vector<Integer> vector = new Vector<Integer>();
Vector<Integer>[] vectors = {vector};

Sie werden einen Kompilierfehler erhalten:

Kann nicht ein generisches Array von Vektor

Wenn Sie jedoch den generischen Typ nicht angeben, lässt Java ihn zu, allerdings mit einer Warnung:

Vector<Integer> vector = new Vector<Integer>();
Vector[] vectors = {vector};

1voto

Edwin Buck Punkte 67237

Vektoren werden von Arrays unterstützt und wachsen oder schrumpfen auf eine Größe, die ausreicht, um das Element aufzunehmen, das Sie in sie einfügen. Daher können Sie einen Vektor im Voraus zuweisen, müssen aber die Größe nicht zum Zeitpunkt der Erstellung angeben.

// preallocated vector, which can hold 100 elements
Vector<Integer> integers = new Vector(100);

.

// default vector, which will probably grow a couple of times when adding 100 element
Vector<Integer> integers = new Vector();

Ein echtes Java-Array kann nicht wachsen oder schrumpfen, und es unterstützt nicht das Entfernen eines Elements aus der Mitte. Um ein Array zuzuweisen, verwenden Sie

// allocate an array
Integer[] integers = new Integer[100];

Wenn Sie nun ein "Array von Vektoren" haben wollen, müssen Sie

// array of vectors
Vector[] vectors = new Vector[100];

0voto

Peter Lawrey Punkte 511323

Um ein Array von generischen zu erstellen, müssen Sie die nicht-generischen erstellen und es gießen. Sie müssen auch alle Elemente im Array initialisieren, sonst sind sie null :(

Vector<Integer>[] anArray = (Vector<Integer>[]) new Vector[100];
for(int i = 0; i < anArray.length; i++)
   anArray[i] = new Vector<Integer>();

Da Vector jedoch eine Legacy-Klasse ist, die in Java 1.2 (1998) durch ArrayList ersetzt wurde, würde ich List für die Schnittstelle und ArrayList für die Implementierung verwenden.

List<Integer>[] anArray = (List<Integer>[]) new List[100];
for(int i = 0; i < anArray.length; i++)
   anArray[i] = new ArrayList<Integer>();

Eine andere Möglichkeit wäre, eine Sammlung zu verwenden, die primitive int anstelle von Integer Objekte. Dies kann die Leistung verbessern, wenn Sie es brauchen.

TIntArrayList[] anArray = new TIntArrayList[100];
for(int i = 0; i < anArray.length; i++)
   anArray[i] = new TIntArrayList();

0voto

Kisora Thomas Punkte 1

Um Typ-Casting zu vermeiden, sollten Sie diese Implementierung in Betracht ziehen:

    Vector<Integer>[] intVectorArray;
    Vector[] temp = new Vector[desiredSize];
    intVectorArray = temp;
    for(int i = 0;i<intVectorArray.length;i++){
        hashArray[i] = new Vector<Integer>();
    }

Die neu geschaffene intVectorArray erbt den generischen Vector-Array-Typ von temp um die gewünschten Abmessungen zu erhalten, und die for Schleife wird der gewünschte Datentyp instanziiert.

Wenn Sie bereit sind, anzurufen Integer Funktionen auf Elemente von intVectorArray dann sind Sie bereit!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X