2009-07-14 8 views
1

Kommend von einem C# Hintergrund habe ich nie irgendwelche Zeiger verwendet.Java Vector: Sicherer Verweis auf Element

Ich erstelle einen Vektor von Kontakten Objekte. Was ist der beste Weg, um einen separaten Vektor zu erstellen, der auf Elemente im großen Vektor verweist?

+1

Es ist praktisch das gleiche Konzept wie in C#. Welche Sicherheit wünschen Sie? – akarnokd

+0

Ich habe eine Anwendung mit einem Vektor mit etwa 1000 Kontaktobjekte (Namen, Adressen usw.), aber jetzt möchte ich einen Favoriten-Vektor erstellen, aber nicht das gesamte Objekt in den neuen Favoriten Vektor kopieren, sondern mit einer Referenz. Ich muss also nur den großen Vektor aktualisieren und der Favoritenvektor wird ebenfalls aktualisiert. –

+0

Nur eine Anmerkung: Vector in Java ist so etwas wie eine Reliquie. Es ist synchronisiert, so dass es einen gewissen Leistungsaufwand bei der Verwendung von Vector im Vergleich zu anderen List-Implementierungen gibt. – wds

Antwort

3

Sie können das alte Vector durchlaufen und die Elemente zu einem neuen Vector hinzufügen.

Vector oldVector; 
Vector newVector = new Vector(oldVector.size()); 

for (int i = 0; i < oldVector.size(); i++){ 
    // add logic to exclude items from the new vector if you need 
    newVector.add(oldVector.get(i)); 
} 

Nun enthalten beide Vektoren Verweise auf die gleichen Objekte. Aufruf:

newVector.get(n).modifyInSomeWay(); 

Die Änderung wird in beiden Listen widergespiegelt.

+0

Ty für den Syntaxfehler beheben! – jjnguy

+0

Ich möchte keine Elemente kopieren. –

+0

Dies kopiert keine Elemente. – jjnguy

1

Fügen Sie einfach das gleiche Objekt Referenz zu beiden Vektoren hinzu!

Contact myContact = getContact(); 

Vector vectorOne = new Vector(); 
Vector vectorTwo = new Vector(); 

vectorOne.add(myContact); 
vectorTwo.add(myContact); 

Es gibt nur eine Instanz von myContact, aber viele Verweise darauf.

Verwandte Themen