"Amigo, ik hoop dat je inmiddels beseft hoe nuttig arrays zijn bij het programmeren?"

"Zeer zeker, Rishi! Ik heb al meer dan één taak opgelost."

"Hadden uw taken repetitieve acties? Het soort dat u keer op keer hebt gedaan."

"Als ik je goed begrepen heb, bedoel je soortgelijke acties in verschillende taken? Bijvoorbeeld overal een lus gebruiken om de inhoud van een array weer te geven - daar ben ik zo moe van!"

"Ja, dat bedoel ik. De makers van Java merkten dat Java-programmeurs vaak dezelfde code schrijven wanneer ze met arrays werken. Bijvoorbeeld code om een ​​deel van een array naar een andere array te kopiëren, of code om elke cel van een array te vullen met dezelfde Of uw voorbeeld: code om de inhoud van een array in een leesbare vorm op het scherm weer te geven.

"En echte programmeurs hebben één heel belangrijke regel: herhaal jezelf niet. Je zult het ermee eens zijn dat het verkeerd is om overbodig werk te doen - je wordt er niet voor betaald. Effectief werk wordt goed betaald, geloof me. code is direct herkenbaar aan de grote hoeveelheid repetitieve code.

"De makers van Java hebben hierover nagedacht en hebben de speciale Arraysklasse gemaakt (de volledige naam is java.util.Arrays), en hebben de meest populaire array-gerelateerde acties erin gestopt."

"Hmm... Heel interessant. Dus wat heeft het precies?

"Het heeft veel methoden voor elke gelegenheid, maar eerst bekijken we er slechts 10 - de eenvoudigste en meest gebruikte.

Arrays.toString()

"De eerste methode die we zullen bekijken is Arrays.toString(). Maar eerst wat achtergrondinformatie.

"Elke array in Java heeft een toString()methode die een 'tekstuele representatie van de array' retourneert. Je kunt een tekstuele representatie van een array krijgen door de volgende instructie te gebruiken:

String str = name.toString();

"Waar nameis de naam van de array-variabele en strde naam van de variabele die de tekenreeksrepresentatie van de array zal opslaan. Amigo, heb je geprobeerd een array op het scherm af te drukken met behulp van de methode?System.out.println(name)

Ik geef toe, dat is gebeurd. Ik zag wat gebrabbel. Ik besloot uit de buurt te blijven en loops te blijven gebruiken.

"Waarschijnlijk heb je iets gezien als:

I@37afeb11

"De eerste letter Ibetekent dat het een intarray is en de symbolen erna @zijn het adres van een enkel object in het geheugen. Je kunt het zien als het adres van de array in het geheugen. Aan de ene kant is dit precies de informatie die is opgeslagen in de array-variabele, maar aan de andere kant had je iets anders verwacht, nietwaar?"

"Precies! Ik was van plan om de waarden in de array te zien. Dit was het laatste wat ik had verwacht."

"En dat is precies waarom ze de methode bedachten Arrays.toString()- om de waarden van een array weer te geven. We noemen het zo:

String str = Arrays.toString(name);

Voorbeelden:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
De strvariabele zal de string bevatten"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
De strvariabele zal de string bevatten"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
De strvariabele zal de string bevatten"[Hi, How's, life?]"

Arrays.deepToString()

"De toString()methode is echter niet geschikt als het gaat om tweedimensionale arrays. Met andere woorden, als je probeert aan te roepen Arrays.toString(), zie je iets bekends:

[I@37afeb11, I@37afeb21, I@37afeb31]

"Dit komt allemaal omdat de cellen van een tweedimensionale array verwijzingen naar eendimensionale arrays opslaan. En hoe worden eendimensionale arrays omgezet in een string? Precies zoals je hierboven ziet.

"Wat te doen dan? Hoe geven we een tweedimensionale array correct weer?"

"De makers van Java hadden hier ook op geanticipeerd. Daartoe Arraysheeft de klasse nog een speciale methode - deepToString(). Het noemen ervan ziet er als volgt uit:

String str = Arrays.deepToString(name);

"Deze methode kan arrays doorgeven die tweedimensionaal, eendimensionaal, driedimensionaal of, in het algemeen, elke dimensie zijn, en het zal altijd de elementen van de array weergeven.

Voorbeelden:

int[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
De strvariabele zal de string bevatten"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
De strvariabele zal de string bevatten"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
De strvariabele zal de string bevatten"[[[1, 2, 3], [1]], [[]]]"

Arrays.equals()

"We hebben ontdekt hoe we arrays op het scherm kunnen weergeven. Hoe zit het met het vergelijken van arrays? Weet je nog welke methoden we kunnen gebruiken om strings te vergelijken?"

"Ik gebruik meestal de equalsmethode!

"Ja, equals, en ook equalsIgnoreCase(die strings vergelijkt zonder rekening te houden met hoofdletters en kleine letters).

"Goed nieuws: je kunt de methode voor arrays ook gebruiken equals. Slecht nieuws: het vergelijkt de inhoud van arrays niet. De equalsmethode van arrays doet hetzelfde als de ==operator: het vergelijkt referenties.

Voorbeelden:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1 == x2;
false(de referenties zijn niet gelijk)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
De equalsmethode arraysvergelijkt eenvoudigweg de referenties van twee arrays.

false(de referenties zijn niet gelijk)

"Dus wat doen we? Hoe vergelijken we arrays op basis van hun inhoud?"

"Wederom schiet de Arraysklas ons te hulp. Meer specifiek, haar Arrays.equals()methode. Zo noemen we het:

Arrays.equals(name1, name2)

"De methode retourneert trueals de arrays even lang zijn en hun elementen gelijk zijn. Anders retourneert het false.

Voorbeelden:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
De equalsmethode arraysvergelijkt eenvoudigweg de referenties van twee arrays.

false(de referenties zijn niet gelijk)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(de inhoud is gelijk)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(de inhoud van de arrays is verschillend)

Arrays.deepEquals()

"En, zoals je waarschijnlijk al vermoedde, Arrays.equalszal de methode niet correct werken voor tweedimensionale arrays: het behandelt tweedimensionale arrays als een eendimensionale array waarvan de elementen adressen zijn van eendimensionale arrays.

"Dus om multidimensionale arrays ( n = 1, 2, 3,... ) correct te vergelijken, bedachten ze de Arrays.deepEquals()methode. Het aanroepen ziet er als volgt uit:

Arrays.deepEquals(name1, name2)

"De methode retourneert trueals de arrays even lang zijn en hun elementen gelijk zijn. Anders retourneert zefalse. Als de elementen in de array ook arrays zijn, Arrays.deepEquals()wordt de methode gebruikt om ze te vergelijken, enzovoort.

Voorbeelden:

int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

x1.equals(x2);
De equalsmethode arrays vergelijkt eenvoudigweg de referenties van twee arrays.

false(de referenties zijn niet gelijk)
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.equals(x1, x2);
De Arrays.equalsmethode vergelijkt en als eendimensionale arrays die referenties opslaan. Ze bevatten verschillende referenties. (de inhoud van de arrays is niet gelijk) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.deepEquals(x1, x2);



true(de inhoud is gelijk)

"Bedankt, Rishi! Deze les is precies wat ik nodig had om mijn leven in de toekomst gemakkelijker en gelukkiger te maken. Nu ga ik de methoden van de klasse Arrays gebruiken en mijn programma's nog sneller schrijven.

"Daar had ik op gerekend, ha-ha. Maar dit zijn niet alle interessante methoden in de klasse Arrays. Ik zal je de volgende keer over andere vertellen."