Arrays.equals ja toString
Vertaile ja tulosta taulukoita.
Arrays.equals ja toString on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Vertailu ja tulostaminen
Taulukot eivät määritä equals- tai toString-menetelmää hyödyllisellä tavalla uudelleen. Apuohjelmaluokka Arrays tarjoaa equals- ja toString-menetelmät, jotka todella tarkastelevat alkioiden sisältöä.
Miksi == ei toimi
==-operaattorin käyttäminen taulukoille vertaa viitteitä, ei sisältöä. Kaksi eri taulukkoa, joissa on samat alkiot, eivät ole ==-vertailussa yhtä suuria.
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b);
}
}Arrays.equals
Arrays.equals(a, b) palauttaa arvon true, kun molemmilla taulukoilla on sama pituus ja yhtä suuret alkiot samoissa kohdissa.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b));
}
}Järjestyksellä on merkitystä
Alkioiden järjestys on merkityksellinen. Kaksi taulukkoa, joissa on samat arvot eri järjestyksessä, eivät ole yhtä suuret.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {3, 2, 1};
System.out.println(Arrays.equals(a, b));
}
}Oliotaulukoiden vertailu
Oliotaulukoissa Arrays.equals vertaa alkioita niiden oman equals-menetelmän avulla.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] a = {"x", "y", "z"};
String[] b = {"x", "y", "z"};
System.out.println(Arrays.equals(a, b));
}
}toString luettavaa tulostusta varten
Taulukon tulostaminen suoraan näyttää esimerkiksi tältä: [I@1b6d3586, eli siinä näkyvät luokan nimi ja hajautusarvo. Arrays.toString tuottaa luettavan muodon, kuten [1, 2, 3].
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
}
}Sisäkkäiset taulukot: deepEquals
Taulukoiden taulukoissa tavallinen equals tarkistaa vain kunkin rivin ulkoiset viitteet. Käyttäkää Arrays.deepEquals-menetelmää sisäkkäisen sisällön vertaamiseen.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{1, 2}, {3, 4}};
System.out.println(Arrays.equals(a, b));
System.out.println(Arrays.deepEquals(a, b));
}
}Sisäkkäiset taulukot: deepToString
Vastaavasti Arrays.deepToString tulostaa sisäkkäiset taulukot selkeästi, kun taas tavallinen toString näyttäisi sisempien taulukoiden viitteet.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] grid = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(grid));
System.out.println(Arrays.deepToString(grid));
}
}Taulukoiden hashCode
Jos tarvitsette sisältöön perustuvan hajautusarvon, käyttäkää Arrays.hashCode-menetelmää ja sisäkkäisille taulukoille Arrays.deepHashCode-menetelmää. Nämä ovat yhdenmukaisia Arrays.equals-menetelmän kanssa.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.hashCode(a) == Arrays.hashCode(b));
}
}Vertailu lajittelun jälkeen
Jos haluatte tarkistaa, sisältävätkö kaksi taulukkoa samat arvot riippumatta niiden järjestyksestä, lajitelkaa molemmista kopiot ja verratkaa niitä sitten Arrays.equals-menetelmällä.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {3, 1, 2};
int[] b = {2, 3, 1};
int[] ca = Arrays.copyOf(a, a.length);
int[] cb = Arrays.copyOf(b, b.length);
Arrays.sort(ca);
Arrays.sort(cb);
System.out.println(Arrays.equals(ca, cb));
}
}Helppo lokitus
Virheenkorjauksen aikana ympäröikää taulukot Arrays.toString-menetelmällä tulostuslausekkeissa, jotta näette arvot kryptisten viitteiden sijaan.
Pikatarkistus
Testatkaa, miten hyvin ymmärrätte taulukoiden vertailun.
Kertaus
Opitte vertaamaan ja tulostamaan taulukoita.
==vertaa viitteitä; käyttäkää sisällön vertaamiseenArrays.equals-menetelmää.- Sekä järjestyksellä että pituudella on merkitystä.
Arrays.toStringtuottaa luettavan tulosteen;deepToStringkäsittelee sisäkkäisiä taulukoita.deepEqualsvertaa sisäkkäisiä taulukoita.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Arrays.equals ja toString” ilmainen?
Kyllä – oppitunnin ”Arrays.equals ja toString” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Arrays.equals ja toString”?
Vertaile ja tulosta taulukoita. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Arrays.equals ja toString”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Arrays.sort ja lajittelu
- Arrays.binarySearch
- Arrays.fill ja copyOf
- Arrays.equals ja toString