Massiivi sisu tuleb kopeerida teise massiivi, kui põhimassiivi sisu peab jääma muutumatuks. Seda tüüpi ülesandeid nimetatakse massiivi klooniks. Massiivi saab Java-s kloonida ilma sisseehitatud funktsiooni kasutamata või konkreetset sisseehitatud funktsiooni kasutamata. Java-l on massiivi kloonimiseks palju sisseehitatud funktsioone. Selles õpetuses on näidatud erinevaid viise Java-massiivi kloonimiseks.
Näide 1: Massiivi kopeerimine operaatori Assignment (=) abil
Javas, kui massiivimuutuja on määratud teisele massiivimuutujale, viitavad mõlemad massiivimuutujad samale mälu asukohale. Seega, kui ühe massiivi mis tahes indeksi väärtust värskendatakse, muudetakse teise massiivi sama indeksi väärtust. Looge järgmise koodiga Java-fail, et teada saada, kuidas massiiv töötab, kui see on määratud mõnele muule massiivi muutujale. Teise massiivi teist indeksi väärtust värskendatakse koodis pärast esimese massiivi määramist teisele massiivile.
avalik klass CloneArray1
{
avalik static void main ( String [ ] args )
{
// Deklareerige põhimassiivi
String [ ] mainArray = { 'Raamat' , 'Pliiats' , 'Reegel' , 'Paber' } ;
System.out.println ( 'Põhimassiivi väärtused: ' ) ;
jaoks ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
// Loendage suurus põhimassiivist
int len = mainArray.length;
// Deklareerige teine massiiv
String [ ] copiedArray = uus string [ ainult ] ;
// Vaadake esimest massiivi teise massiivi järgi
copiedArray = mainArray;
// Muutke mõlema massiivi teist väärtust
kopeeritudArray [ 1 ] = 'Pliiats' ;
System.out.println ( ' \n \n Põhimassiivi väärtused pärast värskendamist: ' ) ;
jaoks ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( ' \n \n Teise massiivi väärtused pärast värskendamist: ' ) ;
jaoks ( String val : copiedArray )
{
System.out.print ( val + ' ' ) ;
}
}
}
Väljund:
Järgmine väljund näitab, et mõlema massiivi teine indeks sisaldab pärast värskendust sama väärtust:
Näide 2: Clone() meetodi kasutamine
Kui soovite teha klooni massiivist, mis salvestatakse mälu erinevatesse kohtadesse, peate kasutama Java sisseehitatud meetodit. Kloon () on üks meetoditest, mis teeb massiivist koopia ja põhimassiivi ei mõjuta kopeeritud massiiv, kui indeksi värskendatakse või vastupidi. Looge Java-fail järgmise koodiga, et näidata meetodi clone() kasutamist stringide massiivi kloonimiseks. Põhimassiivi ja kopeeritud massiivi prinditakse pärast kopeeritud massiivi neljanda elemendi värskendamist.
avalik klass CloneArray2{
avalik static void main ( String [ ] args )
{
// Deklareerige põhimassiivi
String [ ] mainArray = { 'Raamat' , 'Pliiats' , 'Reegel' , 'Paber' } ;
// Loendage suurus põhimassiivist
int len = mainArray.length;
// Deklareerige teine massiiv
String [ ] copiedArray = uus string [ ainult ] ;
// Tehke esimesest massiivist koopia
copiedArray = mainArray.clone ( ) ;
// Muutke teise massiivi teist väärtust
kopeeritudArray [ 3 ] = 'Pliiats' ;
System.out.println ( 'Põhimassiivi väärtused pärast värskendamist: ' ) ;
jaoks ( String val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( ' \n \n Teise massiivi väärtused pärast värskendamist: ' ) ;
jaoks ( String val : copiedArray )
{
System.out.print ( val + ' ' ) ;
}
}
}
Väljund:
Järgmine väljund näitab, et põhimassiivi neljas indeksi väärtus ei ole pärast kopeeritud massiivi neljanda indeksi värskendamist muutunud:
Näide 3: Arraycopy() meetodi kasutamine
Meetod arraycopy() on veel üks Java sisseehitatud meetod massiivimuutuja kloonimiseks. Sellel meetodil on neli argumenti. Esimene argument sisaldab põhimassiivi. Teine argument sisaldab algusindeksit. Kolmas argument sisaldab kopeeritud massiivi. Neljas argument sisaldab massiivi pikkust. Looge Java-fail järgmise koodiga, mis näitab massiivi klooni loomiseks meetodi arraycopy() kasutamist:
avalik klass CloneArray3{
avalik static void main ( String [ ] args )
{
// Deklareerige põhimassiivi
int [ ] mainArray = { 23 , 67 , Neli , 90 , 49 } ;
// Loendage suurus põhimassiivist
int len = mainArray.length;
// Deklareerige teine massiiv
int [ ] copiedArray = uus int [ ainult ] ;
// Tehke esimesest massiivist koopia
System.massiivikoopia ( mainArray, 0 , kopeeritudArray, 0 , ainult ) ;
// Muuda viimane teise massiivi väärtus
kopeeritudArray [ lihtsalt- 1 ] = 80 ;
System.out.println ( 'Põhimassiivi väärtused pärast värskendamist: ' ) ;
jaoks ( int val : mainArray )
{
System.out.print ( val + ' ' ) ;
}
System.out.println ( ' \n \n Teise massiivi väärtused pärast värskendamist: ' ) ;
jaoks ( int val : kopeeritudArray )
{
System.out.print ( val + ' ' ) ;
}
}
}
Väljund:
Järgmine väljund näitab, et põhimassiivi viimane element ei ole pärast kopeeritud massiivi viimase indeksi värskendamist muutunud:
Järeldus
Selles õpetuses näidatakse mitme näite abil meetodite clone() ja arraycopy() kasutamist massiivi kloonimiseks Javas.