Kaip klonuoti masyvus Java

Kaip Klonuoti Masyvus Java



Masyvo turinį reikia nukopijuoti į kitą masyvą, jei pagrindinio masyvo turinys turi likti nepakitęs. Tokio tipo užduotis vadinama masyvo klonu. Masyvas gali būti klonuotas Java nenaudojant jokios integruotos funkcijos arba nenaudojant konkrečios integruotos funkcijos. „Java“ turi daug integruotų funkcijų, leidžiančių klonuoti masyvą. Šiame vadove parodyta, kaip klonuoti masyvą Java.

1 pavyzdys: Nukopijuokite masyvą naudodami priskyrimo (=) operatorių

Java, kai masyvo kintamasis priskiriamas kitam masyvo kintamajam, abu masyvo kintamieji nurodo tą pačią atminties vietą. Taigi, jei atnaujinama bet kurio vieno masyvo indekso reikšmė, keičiama kito masyvo to paties indekso reikšmė. Sukurkite „Java“ failą su šiuo kodu, kad sužinotumėte, kaip veikia masyvas, kai jis priskiriamas kitam masyvo kintamajam. Antroji antrojo masyvo indekso reikšmė atnaujinama kode, priskyrus pirmąjį masyvą antrajam masyvui.







viešoji klasė CloneArray1
{
viešas statinis tuštumas pagrindinis ( Styga [ ] args )
{

// Deklaruokite pagrindinį masyvą
Styga [ ] mainArray = { 'Knyga' , 'Rašiklis' , 'Taisyklinis' , 'Popierius' } ;

System.out.println ( 'Pagrindinio masyvo reikšmės: ' ) ;
dėl ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}

// Suskaičiuokite dydis pagrindinio masyvo
int len ​​= mainArray.length;
// Paskelbkite antrąjį masyvą
Styga [ ] copiedArray = nauja eilutė [ tik ] ;

// Žr. pirmąjį masyvą pagal antrąjį masyvą
copiedArray = mainArray;

// Pakeiskite antrąją abiejų masyvų reikšmę
nukopijuotasArray [ 1 ] = 'Pieštukas' ;

System.out.println ( \n \n Pagrindinio masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( \n \n Antrojo masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( String val : copiedArray )
{
System.out.print ( val + ' ' ) ;
}
}
}


Išvestis:



Ši išvestis rodo, kad antrajame abiejų masyvų indekse yra ta pati reikšmė po atnaujinimo:







2 pavyzdys: Klono() metodo naudojimas

Jei norite sukurti masyvo, kuris bus saugomas skirtingose ​​atminties vietose, kloną, turite naudoti integruotą Java metodą. Klonas () yra vienas iš metodų, kuriais sukuriama masyvo kopija, o nukopijuotas masyvas nepaveiks pagrindinio masyvo, jei atnaujinamas indeksas, arba atvirkščiai. Sukurkite „Java“ failą su šiuo kodu, kad parodytumėte, kaip klonuoti eilučių masyvą naudojamas metodas clone(). Pagrindinis masyvas ir nukopijuotas masyvas spausdinami atnaujinus ketvirtąjį nukopijuoto masyvo elementą.

viešoji klasė CloneArray2
{
viešas statinis tuštumas pagrindinis ( Styga [ ] args )
{
// Deklaruokite pagrindinį masyvą
Styga [ ] mainArray = { 'Knyga' , 'Rašiklis' , 'Taisyklinis' , 'Popierius' } ;

// Suskaičiuokite dydis pagrindinio masyvo
int len ​​= mainArray.length;
// Paskelbkite antrąjį masyvą
Styga [ ] copiedArray = nauja eilutė [ tik ] ;

// Padarykite pirmojo masyvo kopiją
copiedArray = mainArray.clone ( ) ;

// Pakeiskite antrąją antrojo masyvo reikšmę
nukopijuotasArray [ 3 ] = 'Pieštukas' ;

System.out.println ( 'Pagrindinio masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( \n \n Antrojo masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( String val : copiedArray )
{
System.out.print ( val + ' ' ) ;
}
}
}


Išvestis:



Ši išvestis rodo, kad ketvirtoji pagrindinio masyvo indekso reikšmė nepasikeitė atnaujinus ketvirtąjį nukopijuoto masyvo indeksą:

3 pavyzdys: Arraycopy() metodo naudojimas

Metodas arraycopy () yra dar vienas integruotas Java metodas, leidžiantis sukurti masyvo kintamojo kloną. Šis metodas turi keturis argumentus. Pirmajame argumente yra pagrindinis masyvas. Antrajame argumente yra pradinis indeksas. Trečiame argumente yra nukopijuotas masyvas. Ketvirtasis argumentas apima masyvo ilgį. Sukurkite Java failą su šiuo kodu, kuris parodo arraycopy() metodo naudojimą masyvo klonui sukurti:

viešoji klasė CloneArray3
{
viešas statinis tuštumas pagrindinis ( Styga [ ] args )
{
// Deklaruokite pagrindinį masyvą
tarpt [ ] mainArray = { 23 , 67 , Keturi , 90 , 49 } ;

// Suskaičiuokite dydis pagrindinio masyvo
int len ​​= mainArray.length;
// Paskelbkite antrąjį masyvą
tarpt [ ] copiedArray = naujas tarpt [ tik ] ;

// Padarykite pirmojo masyvo kopiją
System.masyvo kopija ( pagrindinis masyvas, 0 , nukopijuotasArray, 0 , tik ) ;

// Pakeisti paskutinis antrojo masyvo vertė
nukopijuotasArray [ tiesiog - 1 ] = 80 ;

System.out.println ( 'Pagrindinio masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( int val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( \n \n Antrojo masyvo reikšmės po atnaujinimo: ' ) ;
dėl ( int val : copiedArray )
{
System.out.print ( val + ' ' ) ;
}
}
}


Išvestis:

Ši išvestis rodo, kad paskutinis pagrindinio masyvo elementas nepasikeitė atnaujinus paskutinį nukopijuoto masyvo indeksą:

Išvada

Clone() ir arraycopy() metodų naudojimas masyvo klonavimui Java programoje parodytas šioje pamokoje naudojant kelis pavyzdžius.