"Amigo, jeg håper du nå har innsett hvor nyttige arrays er i programmering?"

"Definitivt, Rishi! Jeg har allerede løst mer enn én oppgave."

"Hadde oppgavene dine gjentatte handlinger? Den typen du har gjort om og om igjen."

"Hvis jeg forsto deg riktig, mener du lignende handlinger i forskjellige oppgaver? For eksempel, overalt å bruke en løkke for å vise innholdet i en matrise - jeg er så lei av å gjøre det!"

"Ja, det er det jeg mener. Javas skapere la merke til at Java-programmerere ofte skriver den samme koden når de jobber med matriser. For eksempel kode for å kopiere deler av en matrise til en annen matrise, eller kode for å fylle hver celle i en matrise med det samme eller ditt eksempel: kode for å vise innholdet i en matrise i en lesbar form på skjermen.

"Og ekte programmerere har en veldig viktig regel: ikke gjenta deg selv. Du er enig i at det er galt å gjøre overflødig arbeid - du vil ikke få betalt for det. Effektivt arbeid er godt betalt, tro meg. Forresten, en nybegynners koden er umiddelbart gjenkjennelig av den store mengden repeterende kode.

"Javas skapere grunnet på dette og skapte spesialklassen Arrays(dens fulle navn er java.util.Arrays), og la de mest populære array-relaterte handlingene inn i den."

"Hmm... Veldig interessant. Så hva har den egentlig?

"Den har mange metoder for enhver anledning, men først skal vi vurdere bare 10 av dem - de enkleste og mest brukte.

Arrays.toString()

"Den første metoden vi skal se på er Arrays.toString()... Men først, litt bakgrunn.

"Hver array i Java har en toString()metode som returnerer en 'tekstuell representasjon av arrayen'. Du kan få en tekstlig representasjon av en array ved å bruke følgende setning:

String str = name.toString();

"Hvor nameer navnet på matrisevariabelen, og strer navnet på variabelen som vil lagre strengrepresentasjonen av matrisen. Amigo, har du prøvd å skrive ut en matrise til skjermen ved å bruke metoden ?System.out.println(name)

Jeg innrømmer, det skjedde. Jeg så noe vrøvl. Jeg bestemte meg for å holde meg unna og fortsette å bruke løkker.

"Sannsynligvis så du noe sånt som:

I@37afeb11

"Den første bokstaven Ibetyr at det er en intmatrise, og symbolene etter @er adressen til et enkelt objekt i minnet. Du kan tenke på det som matrisens adresse i minnet. På den ene siden er dette nettopp informasjonen som er lagret i array-variabel, men på den andre siden forventet du noe annet, ikke sant?"

"Akkurat! Jeg planla å se verdiene i matrisen. Dette var det siste jeg forventet."

"Og det er nettopp derfor de kom opp med metoden Arrays.toString()- å vise verdiene til en matrise. Vi kaller det slik:

String str = Arrays.toString(name);

Eksempler:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
Variabelen strvil inneholde strengen"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
Variabelen strvil inneholde strengen"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
Variabelen strvil inneholde strengen"[Hi, How's, life?]"

Arrays.deepToString()

"Metoden er imidlertid toString()ikke tilstrekkelig når det kommer til todimensjonale arrays. Med andre ord, hvis du prøver å ringe Arrays.toString(), vil du se noe kjent:

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

"Alt dette er fordi cellene i en todimensjonal matrise lagrer referanser til endimensjonale matriser. Og hvordan konverteres endimensjonale matriser til en streng? Nøyaktig som du ser ovenfor.

"Hva skal jeg gjøre da? Hvordan viser vi en todimensjonal matrise riktig?"

"Javas skapere forutså dette også. For dette formål Arrayshar klassen en annen spesiell metode - deepToString(). Å kalle den ser slik ut:

String str = Arrays.deepToString(name);

"Denne metoden kan bestå matriser som er todimensjonale, endimensjonale, tredimensjonale eller generelt en hvilken som helst dimensjon, og den vil alltid vise elementene i matrisen.

Eksempler:

int[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
Variabelen strvil inneholde strengen"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
Variabelen strvil inneholde strengen"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
Variabelen strvil inneholde strengen"[[[1, 2, 3], [1]], [[]]]"

Arrays.equals()

"Vi fant ut hvordan vi skulle vise arrays på skjermen. Hva med å sammenligne arrays? Husker du hvilke metoder vi kan bruke for å sammenligne strenger?"

«Jeg pleier å bruke equalsmetoden!

"Ja, equals, og også equalsIgnoreCase(som sammenligner strenger uten hensyn til store og små bokstaver).

"Gode nyheter: du kan også bruke equalsmetoden for matriser. Dårlige nyheter: den sammenligner ikke innholdet i matriser. Metoden equalsfor matriser gjør det samme som ==operatøren - den sammenligner referanser.

Eksempler:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1 == x2;
false(referansene er ikke like)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Metoden equalsfor arraysganske enkelt å sammenligne referansene til to matriser.

false(referansene er ikke like)

"Så hva gjør vi? Hvordan sammenligner vi matriser basert på innholdet deres?"

"Igjen Arrayskommer klassen til vår unnsetning. Mer spesifikt Arrays.equals()metoden. Dette er hvordan vi kaller det:

Arrays.equals(name1, name2)

"Metoden returnerer truehvis matrisene er like lange og elementene deres er like. Ellers returnerer den false.

Eksempler:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Metoden equalsfor arraysganske enkelt å sammenligne referansene til to matriser.

false(referansene er ikke like)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(innholdet er likt)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(innholdet i arrayene er forskjellig)

Arrays.deepEquals()

"Og, som du sikkert allerede har gjettet, Arrays.equalsvil metoden ikke fungere riktig for todimensjonale matriser: den behandler todimensjonale matriser som en endimensjonal matrise hvis elementer er adresser til endimensjonale matriser.

"Derfor, for å sammenligne flerdimensjonale arrays ( n = 1, 2, 3,... ), kom de opp med Arrays.deepEquals()metoden. Å kalle den ser slik ut:

Arrays.deepEquals(name1, name2)

"Metoden returnerer truehvis matrisene er like lange og elementene deres er like. Ellers returnerer denfalse. Hvis elementene inne i matrisen også er matriser, Arrays.deepEquals()brukes metoden for å sammenligne dem, og så videre.

Eksempler:

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

x1.equals(x2);
Metoden equalsfor arrays ganske enkelt å sammenligne referansene til to matriser.

false(referansene er ikke like)
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.equals(x1, x2);
Metoden Arrays.equalsvil sammenligne og som endimensjonale arrays som lagrer referanser. De inneholder forskjellige referanser. (innholdet i matrisene er ikke like) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.deepEquals(x1, x2);



true(innholdet er likt)

"Takk, Rishi! Denne leksjonen er akkurat det jeg trengte for å gjøre livet mitt enklere og lykkeligere i fremtiden. Nå skal jeg bruke Arrays-klassens metoder og skrive programmene mine enda raskere.

"Det var det jeg regnet med, ha-ha. Men dette er ikke alle de interessante metodene i Arrays-klassen. Jeg skal fortelle deg om andre neste gang."