Java - kopiering av matriser

Innholdsfortegnelse
Når du har mestret begrepene matrise og hvordan du fyller den og hvordan du går gjennom en, må vi også sikkert generere kopier av matriser, siden vi mange ganger må behandle innholdet i nevnte matrise uten å endre en original som vi skal bruke til andre formål.
Selv om kopiering kan høres ut som en veldig enkel aktivitet, er det virkelig litt mer komplisert enn å tildele matriseverdi til en annen deklarert variabel av denne typen.
Kopiering av matriser
Som en del av logikken i programmene våre, vil vi sannsynligvis på et tidspunkt trenge det kopier en matrise til en annen variabelFor å kunne jobbe med elementene i en annen forekomst av programmet, som vi nevnte i begynnelsen, er ikke tildeling av variabelen som inneholder matrisen til en annen den riktige løsningen.
Anta at vi gjør oppgaven slik:
varArrar2 = varArray1;

I dette tilfellet er det ingen syntaktisk feil, så instruksjonen fungerer uten problemer, selv om vi prøver å sløyfe varArray2 vi vil få de verdiene vi vet at vi har varArray1, du lurer på hvor problemet er da, problemet er at i denne instruksjonen hva du gjorde Java var å kopiere referansen til innholdet i den første matrisen, så hvis vi gjør en endring i en av de to, vil de begge se endringen.
Som vi kan se, er dette ikke en veldig effektiv metode med mindre vi ønsker å kopiere referansen effektivt.
Riktig måte å kopiere en matriseDet er flere måter å utføre kopi av en matrise, ved hjelp av en løkke som går gjennom den første matrisen og tilordner verdiene til den andre, ved hjelp av statisk matrisekopimetode hva som er inneholdt i klassen System og til slutt bruke klonmetodeImidlertid er sistnevnte litt mer avansert enn det vi ser her.
Bruke en sløyfe
Dette er den enkleste metoden av alle, selv om den er litt møysommelig, oppfyller den målet riktig og lar oss skaffe en ny matrise som ville være kopien av originalen og helt uavhengig av den, for å lage denne kopien vi skal gjør følgende:
 int [] varArray1 = {2, 3, 1, 5, 10}; int [] varArray2 = ny int [varArray1.length]; for (int i = 0; i <varArray1.length; i ++) {varArray2 [i] = varArray1 [i]; } 

Som vi ser er det noe veldig enkelt, vi har vårt første matrise med et antall verdier som allerede er tilordnet i innholdet, lager vi en andre matrise og vi indikerer at dimensjonen vil være lengden på den opprinnelige matrisen og til slutt med en for sløyfe vi tilordner vår nye matrise verdien som tilsvarer posisjonen til syklusen til den første matrisen.
Bruke arraycopy -metoden
En enklere måte som bruker litt mindre kode er den statiske metoden matrisekopi, bryter denne metoden navnekonvensjonen til Java men det fungerer riktig, for å bruke det må vi gjøre følgende:
System.arraycopy (varArray1, varArray1_pos, varArray2, varArray2_pos, length);

Som vi kan se på en enkelt linje løser vi problemet, metoden mottar i sitt første argument matrisen som vi skal kopiere, deretter mottar den utgangsposisjonen der vi skal kopiere, deretter destinasjonsmatrisen til kopien , sin opprinnelige posisjon og til slutt kopilengden:

Til slutt så vi at kopiering av en matrise, selv om den ikke er så enkel som en tildeling av variabler, er en relativt enkel oppgave ved å bruke metodene beskrevet i denne opplæringen.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave