Corak Record Bersarang
Padankan data yang bersarang secara mendalam
Corak Record Bersarang ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Corak Rekod Bersarang
Corak rekod boleh bersarang: komponen yang juga merupakan rekod boleh dinyahstrukturkan di dalam corak luar. Ini membolehkan data berstruktur mendalam dipadankan dalam satu ungkapan.
Model Data Bersarang
Pertimbangkan Line yang terdiri daripada dua rekod Point. Rekod dalaman itu sememangnya sesuai untuk disarang.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
public static void main(String[] args) {
Line line = new Line(new Point(0, 0), new Point(3, 4));
System.out.println(line);
}
}Penyahstrukturan Satu Aras
Corak rata mengikat dua komponen Point tetapi membiarkannya sebagai objek lengkap.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
public static void main(String[] args) {
Object obj = new Line(new Point(0, 0), new Point(3, 4));
if (obj instanceof Line(Point s, Point e)) {
System.out.println(s + " -> " + e);
}
}
}Menyelami Lebih Dalam
Gantikan Point s dalaman dengan corak rekodnya sendiri untuk mencapai koordinat secara terus: Line(Point(int x1, int y1), Point(int x2, int y2)).
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
public static void main(String[] args) {
Object obj = new Line(new Point(0, 0), new Point(3, 4));
if (obj instanceof Line(Point(int x1, int y1), Point(int x2, int y2))) {
double len = Math.hypot(x2 - x1, y2 - y1);
System.out.println("Length: " + len);
}
}
}Sebarang Kedalaman
Penyarangan boleh dilakukan sedalam struktur data anda. Pada setiap aras, anda boleh mengikat keseluruhan komponen atau menyahstrukturnya dengan lebih lanjut, sepadan tepat dengan bentuk struktur tersebut.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
record Drawing(Line first, String label) {}
public static void main(String[] args) {
Object obj = new Drawing(new Line(new Point(1, 2), new Point(3, 4)), "diag");
if (obj instanceof Drawing(Line(Point(var ax, var ay), var end), var label)) {
System.out.println(label + " starts at " + ax + "," + ay);
System.out.println("ends near " + end);
}
}
}Mencampurkan var dan Jenis
Dalam corak bersarang, anda boleh mencampurkan jenis yang dinyatakan secara jelas dengan var secara bebas. Gunakan var untuk komponen yang hanya anda teruskan dan jenis yang jelas apabila ia membantu kefahaman.
Penyarangan dalam Pernyataan Pemilihan
Corak bersarang amat berkesan dalam pernyataan pemilihan kerana setiap kes boleh menerangkan bentuk data yang tepat.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
static String describe(Object o) {
return switch (o) {
case Line(Point(var x1, var y1), Point(var x2, var y2)) when x1 == x2 -> "vertical";
case Line(Point p1, Point p2) -> "general line";
default -> "not a line";
};
}
public static void main(String[] args) {
System.out.println(describe(new Line(new Point(2, 0), new Point(2, 9))));
System.out.println(describe(new Line(new Point(0, 0), new Point(5, 5))));
}
}Keseluruhan Padanan Mesti Berjaya
Corak bersarang hanya sepadan jika setiap aras sepadan. Jika mana-mana komponen mempunyai jenis yang berbeza daripada jangkaan subcoraknya, padanan keseluruhan gagal dan tiada pemboleh ubah diikat.
Pertimbangan Kebolehbacaan
Penyarangan mendalam memang berkuasa, tetapi boleh menjadi sukar dibaca. Jika corak menjadi terlalu besar, pertimbangkan untuk menyahstrukturkan satu aras dan mengendalikan selebihnya dengan logik berasingan.
Syarat Pengawal untuk Ikatan Bersarang
Oleh sebab corak bersarang mendedahkan nilai dalaman sebagai pemboleh ubah tempatan, satu syarat pengawal when boleh merujuk medan daripada beberapa aras serentak.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
static boolean isUnitStep(Object o) {
return o instanceof Line(Point(int x1, int y1), Point(int x2, int y2))
&& x2 - x1 == 1 && y2 - y1 == 1;
}
public static void main(String[] args) {
System.out.println(isUnitStep(new Line(new Point(0, 0), new Point(1, 1))));
System.out.println(isUnitStep(new Line(new Point(0, 0), new Point(2, 2))));
}
}Contoh Lengkap
Hitung titik tengah sesuatu garisan dengan menyahstrukturkan kedua-dua titik hujungnya.
public class Main {
record Point(int x, int y) {}
record Line(Point start, Point end) {}
static Point midpoint(Object o) {
if (o instanceof Line(Point(int x1, int y1), Point(int x2, int y2))) {
return new Point((x1 + x2) / 2, (y1 + y2) / 2);
}
return null;
}
public static void main(String[] args) {
System.out.println(midpoint(new Line(new Point(0, 0), new Point(4, 6))));
}
}Semakan Pantas
Uji pemahaman anda tentang corak rekod bersarang.
Ringkasan
Anda telah mempelajari corak rekod bersarang.
- Komponen rekod yang juga merupakan rekod boleh dinyahstrukturkan sebaris.
- Penyarangan boleh dilakukan pada sebarang kedalaman dan boleh mencampurkan jenis yang jelas dengan
var. - Padanan hanya berjaya jika setiap aras sepadan.
- Ikatan dalaman boleh digunakan dalam syarat pengawal dan badan yang sama.
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Corak Record Bersarang” percuma?
Ya — teks penuh “Corak Record Bersarang” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Corak Record Bersarang”?
Padankan data yang bersarang secara mendalam Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Corak Record Bersarang” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Padanan Corak untuk instanceof
- Corak Record
- Corak Record Bersarang
- Corak dalam switch