Javascript Kopieer array van objecten zonder referentie

| | | | | | | | | | | | | | | | | | | | | |

Als u met arrays in Java werkt, kunt u besluiten een kopie van een array te maken. Als u bijvoorbeeld een café runt en een seizoensmenu wilt maken, kunt u een kopie van het originele menu maken waarop u het nieuwe menu kunt baseren.

In Java zijn er verschillende manieren waarop u kunt kopiëren een array. In deze zelfstudie worden vier veelgebruikte methoden voor het kopiëren van tabellen onderzocht en wordt rij voor rij besproken hoe ze werken. Na het lezen van deze tutorial, ben je een meester in het kopiëren van tabellen in Java.

Java-arrays

In Java is een array een container die waarden bevat ‚Äã‚Äãdie een enkele bevatten type. Een tabel kan bijvoorbeeld worden gebruikt om een lijst met boeken op te slaan of een lijst met scores die spelers hebben verdiend in een spelletje darts.

Arrays zijn handig als u met veel waarden wilt werken ‚Äã‚ Äãomdat je ze in een verzameling kunt bewaren. Dit stelt je in staat om je code te condenseren en tegelijkertijd dezelfde methoden op dezelfde waarden uit te voeren.

Het woord Laten we een array willen maken waarin de koffie wordt opgeslagen die in onze coffeeshop wordt verkocht. We zouden het met deze code kunnen doen:

String [] = coffees {"Espresso", "Mocha", "Latte", "cappuccino", "Versare Over", "Flat white" } ;

In dit voorbeeld declareren we een array met de naam cafés waarin tekenreekswaarden worden opgeslagen. Onze array bevat zes waarden.

Aan elk element van een array wordt een indexnummer toegewezen, beginnend met 0, dat kan worden gebruikt om naar afzonderlijke elementen in een array te verwijzen.

Nu we de basisprincipes van Java-arrays hebben onderzocht, kunnen we de methoden bespreken die u kunt gebruiken om de inhoud van uw tabel te kopiëren.

Kopieer de array met behulp van de toewijzingsoperator

Een van de meest gebruikte kloonmethoden voor het kopiëren van een array is het gebruik van de toewijzingsoperator.

De toewijzingsoperator wordt gebruikt om een waarde aan een array toe te kennen. Met de toewijzingsoperator kunnen we toewijzen de inhoud van een bestaande array naar een nieuwe variabele, die een kopie van onze bestaande array maakt.

Laten we teruggaan naar de coffeeshop. Laten we zeggen dat we een kopie willen maken van de cafés array waarop we ons zomerkoffiemenu zullen baseren. We kunnen deze code gebruiken om een kopie van de array te maken:

Onze code retourneert:

Espresso, Moka, Latte, Cappuccino, Giet erover, plat wit,

Break from Onze code afgedaald. Op de eerste regel code in onze CopyAssignment-klasse declareren we een array met de naam cafés die ons standaard cafémenu opslaat.

Op de volgende regel gebruiken we de toewijzingsoperator om toe te wijzen de waarde van cafes naar een nieuwe array genaamd summer_coffees. Vervolgens maken we een "for-each"-lus die elk summer_coffees array-element doorgeeft en naar de console afdrukt.

Er is een nadeel aan het gebruik van deze methode: als u verandert de elementen van de ene array, wordt de andere array ook gewijzigd. Dus als we de waarde van Latte Summer Latte in onze summer_coffee-lijst hebben gewijzigd, onze koffie lijst zou ook worden gewijzigd

loop om arrays te kopiëren

de eerste benadering die we hebben besproken om een array te kopiëren -. met behulp van de toewijzingsoperator - creëert wat een kopie ondiep wordt genoemd. Dit is het geval omdat we een bestaand array-object hebben toegewezen aan een nieuw object, wat betekent dat wanneer we een object wijzigen, ze allebei worden gewijzigd - de twee objecten zijn gerelateerd

We moeten echter vaak een diepe kopie maken. Diepe kopieën kopiëren de waarden ‚Äã‚Äãvan een bestaand object en maken een nieuw array-object. Wanneer u een volledige kopie maakt, kunt u uw nieuwe tabel zonder het origineel te beïnvloeden.

Een benadering die kan worden gebruikt om een volledige kopie te maken, is door een -lus te maken door de inhoud van een array en een nieuwe array te maken.

Stel dat we wil een volledige kopie maken van onze cafés-tabel genaamd summer_coffees. Dit moet een grondige kopie zijn, aangezien we van plan zijn de inhoud van de summer_coffees te wijzigen tabel om de nieuwe koffies weer te geven die we in de zomermaanden zullen aanbieden.

Hier is de code die we zouden gebruiken om een diepe kopie te maken met behulp van een -lus:

Als we onze code uitvoeren, is de uitvoer als volgt:

[Espresso, Mokka, Latte, Cappuccino, Pour over, Flat White]

Zoals je kunt zien, heeft onze code een kopie gemaakt van onze originele array. We leggen stap voor stap uit hoe het werkt:

  1. We importeren java.util.Arrays inclusief toString () methode, we zullen het gebruiken om onze array af te drukken op de console aan het einde van het voorbeeld.
  1. We declareren een array met de naam cafes die de koffielijst opslaat in ons standaardmenu.
  2. We initialiseren een array met de naam summer_coffees die zes waarden kan opslaan.
  3. We gebruiken een lus om elk item in de café -lijst te doorlopen.
  4. Telkens wanneer de lus wordt uitgevoerd, krijgt het element met de waarde van index i in summer_coffees het element met de code-indexwaarde <> i in cafés toegewezen.
  5. We gebruiken Arrays.toString () om summer_coffees naar een string te converteren, en print vervolgens de nieuwe array met onze gekopieerde items naar de console.

Java copyOfRange () methoden gebruiken

De Java copyOfRange () methode om Arrays .copyOfRange ( te kopiëren) ) maakt deel uit van de klasse java.util.Arrays. Hier is de syntaxis voor de methode copyOfRange () :

We gaan de syntaxis van de methode copyOfRange () analyseren:

  1. DataType is het gegevenstype dat de nieuwe array wordt opgeslagen.
  2. newArray is de naam van de nieuwe array.
  3. oldArray is de array waarvan de waarden ‚Äã ‚Äãu wilt kopiëren naar de newArray directory.
  4. indexPos is waar de kopieerbewerking moet beginnen in de oldArray.
  5. lengte is het aantal waarden ‚Äã‚Äãdat moet worden gekopieerd van oldArray newArray.
  6. < / ol>

    Laten we een voorbeeld nemen om de methode copyOfRange () in actie te illustreren. Stel dat we een kopie willen maken van onze cafés array van eerder. We zouden dat kunnen doen met deze code:

    Onze code retourneert:

    zomerkoffie: [Espresso, Moka, Latte, Cappuccino, Pour over, flat white]

    splits onze code op:

    1. We importeren java.util.Arrays bibliotheek die copyOfRange () methoden opslaat en toString () die we zullen in ons voorbeeld gebruiken.
    2. we declareren een array met de naam cafes die de koffie opslaat in ons standaardmenu.
    3. We declareren een array met de naam summer_coffees en gebruik de methode copyOfRange () om een kopie te maken van de cafes-array. De parameters die we specificeren zijn als volgt:
      1. cafés is de naam van de tabel die we willen kopiëren
      2. geeft aan dat wij. wil de waarden kopiëren vanaf de positie van de index van 0 salontafel .
      3. coffees.length geeft aan dat we elke waarde willen kopiëren naar de. list
      4. Wij drukken "zomerkoffies:" . gevolgd door de resulterende array met de naam summer_coffees op de console

      Nu hebben we een kopie gemaakt van onze cafe-lijst met de naam summer_coffees .

      Java Arraycopy ()-methoden gebruiken

      De arraycopy ()-methode wordt gebruikt om gegevens van het ene netwerk naar een ander netwerk te kopiëren. De methode arraycopy () maakt deel uit van de systeemklasse en bevat een reeks opties waarmee u de kopie die u van een bestaande array maakt, kunt aanpassen.

      Hier is de syntaxis van de methode arraycopy ():< br>

      System.arraycopy (sourceArray, StartingPos, newArray, newArrayStartingPos, lengte);

      Deze teleurstellingsmethode doorbreken. copyarray () heeft vijf parameters:

      • sourceArray is de naam van de array die u wilt kopiëren
      • startPos. is de locatie van de index waarvan u wilt beginnen met het kopiëren van waarden ‚Äã‚Äãin de source_array.
      • newArray is de naam van de nieuwe array waarin de waarden ‚Äã‚Äãworden gekopieerd.
      • newArrayStartingPos is de indexpositie waar de gekopieerde waarden ‚Äã‚Äãmoeten worden toegevoegd.
      • lengte is het aantal elementen dat je wilt kopiëren naar de new_array directory.

      Terug naar de coffeeshop. Stel dat we elke waarde in onze cafés-array willen kopiëren naar een nieuwe array met de naam summer_coffees. We zouden dat kunnen doen met deze code:

      Onze code geeft als resultaat:

zomer koffies: [espresso, mokka, latte, cappuccino, pour over, flat white]

ontdek onze code stap voor stap -Stap:

  1. we importeren het pakket java.util.Arrays aan het begin van ons programma, inclusief de methode toString () die we zullen gebruiken om de kopie van de array af te drukken die we aan het einde van ons programma maken.
  2. We declareren een array met de naam coffe es die de koffie opslaat in ons standaardmenu.
  3. We initialiseren een array met de naam summer_coffees die 6 waarden zal bevatten.
  4. We gebruiken arraycopy () om een kopie te maken van onze cafes array. Dit zijn de parameters die we specificeren.
    1. cafés is de array die we willen kopiëren
    2. is de positie waar we willen dat onze kopie begint in de cafés array.
    3. summer_coffees is de array waar we willen dat de gekopieerde waarden ‚Äã‚Äãworden toegevoegd.
    4. is waar we willen dat de gekopieerde waarden ‚Äã‚Äãaan de array summer_coffees worden toegevoegd.
    5. coffees.length is het aantal arrays elementen die we willen kopiëren. In dit geval stelt het gebruik van coffees.length ons in staat om elk item uit de cafés-lijst te kopiëren.
    6. We printen een bericht met de tekst " zomerkoffie:". Gevolgd door de lijst met zomerkoffie die we hebben gemaakt
    7. Conclusie

      Het kopiëren van een array is een veelvoorkomende bewerking bij het werken met lijsten. In deze zelfstudie werden vier manieren onderzocht waarop een array in Java kan worden gekopieerd.

      Eerst hebben we besproken hoe u een geringe kopieerdiepte kunt maken met de toewijzingsoperator, dus gingen we verder met het uitleggen hoe u een volledige kopie kunt maken met een lus. Daarom hebben we onderzocht hoe we de methode copyOfRange () kunnen gebruiken om een kopie van een array te maken en hoe de systeemmethode arraycopy () wordt gebruikt om een array te kopiëren.

      U bent nu klaar om te beginnen met het kopiëren van arrays in Java als one!pro