/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
kopiering af objekter i en vector
Fra : Per Henriksen


Dato : 10-01-01 21:11

Hvordan kopiere man en vector og dens objekter (hvis det kan lade sig gøre)?

Så vidt jeg har forstået, får man bare en ekstra reference til objekterne i
en vector, hvis man bruger "clone". Så hvis man ændre i objekterne i den
clonede vector, ændre man også i de originale objekter.

Mvh.
Per



 
 
Brian Matzon (10-01-2001)
Kommentar
Fra : Brian Matzon


Dato : 10-01-01 22:27

"Per Henriksen" <birdieno2@hotmail.com> wrote in message
news:Wj376.272$tP.19216@news.get2net.dk...
> Hvordan kopiere man en vector og dens objekter (hvis det kan lade sig
gøre)?
>
> Så vidt jeg har forstået, får man bare en ekstra reference til objekterne
i
> en vector, hvis man bruger "clone". Så hvis man ændre i objekterne i den
> clonede vector, ændre man også i de originale objekter.
>

Du laver en deep copy.

Vector temp = new Vector(otherVector.size());
for (Enumeration e = otherVector.elements() ; e.hasMoreElements() ;) {´
temp.add(e.nextElement().clone())
}

og satser på at alle de klasser Vectore'en indeholder også laver en deep
copy :)

/Brian Matzon



Mikkel Bundgaard (10-01-2001)
Kommentar
Fra : Mikkel Bundgaard


Dato : 10-01-01 23:11

Per Henriksen <birdieno2@hotmail.com> wrote in message
news:Wj376.272$tP.19216@news.get2net.dk...
> Hvordan kopiere man en vector og dens objekter (hvis det kan lade sig
gøre)?
>
> Så vidt jeg har forstået, får man bare en ekstra reference til objekterne
i
> en vector, hvis man bruger "clone". Så hvis man ændre i objekterne i den
> clonede vector, ændre man også i de originale objekter.
>
> Mvh.
> Per
>
Hej Per

Dette er klippet ud fra Java 1.2 API'en:

public Object clone()

Returns a clone of this vector. The copy will contain a reference to a clone
of the internal data array, not a reference to the original internal data
array of this Vector object.

Og her er et lille eksempel:

import java.util.Vector;

public class CloneTest {
public static void main( String args[] ) {
Vector test1 = new Vector( 3 );
test1.insertElementAt(new String("Hej"),0);
test1.insertElementAt(new String("med"),1);
test1.insertElementAt(new String("dig."),2);

Vector test2 = (Vector) test1.clone();
test2.insertElementAt(new String("dig.2"),2);

System.out.print( test1.get(2) ); // Udskriver "dig."
System.out.print( test2.get(2) ); // Udskriver "dig.2"
}
}

Begge ting tyder på at clone() i tilfældet med Vector returnerer en kopi og
ikke blot en ny reference.

Håber du kunne bruge det til noget

--
Mvh.
Mikkel Bundgaard
RUC Datalogi



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste