Rumah >Java >javaTutorial >Bagaimana untuk Mengatasi Kaedah equals() dalam Java untuk Perbandingan Objek Tepat?
Mengatasi Kaedah equals() dalam Java untuk Perbandingan Objek
Dalam Java, kaedah equals() membolehkan anda menentukan sama ada dua objek adalah sama. Secara lalai, equals() membandingkan rujukan objek, yang tidak selalunya tingkah laku yang diingini. Mengatasi kaedah equals() membolehkan anda menentukan logik perbandingan anda sendiri.
Senario:
Anda mahu mengatasi kaedah equals() dalam kelas Orang yang mempunyai dua medan data: nama dan umur. Anda bertujuan untuk membandingkan objek orang berdasarkan nama dan umur mereka.
Kaedah custom equals():
Untuk mengatasi kaedah equals() , anda mentakrifkannya dalam Kelas orang:
public boolean equals(People other) { // Null check and class check if (other == null || getClass() != other.getClass()) { return false; } // Downcast to People People otherPeople = (People) other; // Compare fields using == for primitive types (age) and equals() for objects (name) return name.equals(otherPeople.name) && age == otherPeople.age; }
Membetulkan Jenis Primitif Perbandingan:
Kod asal cuba menggunakan equals() untuk membandingkan medan umur, yang merupakan jenis primitif. Jenis primitif mempunyai operator perbandingan kesamaan mereka sendiri (dalam kes ini, ==). Mengubahsuai age.equals(other.age) to age == other.age menyelesaikan isu ini.
Contoh Penggunaan:
Dalam kelas Utama, ArrayList of Person objek dicipta. Kaedah equals() digunakan untuk membandingkan orang dan mencetak hasilnya:
ArrayList<Person> people = new ArrayList<>(); people.add(new Person("Subash Adhikari", 28)); // ... // Compare people objects for (int i = 0; i < people.size() - 1; i++) { for (int y = i + 1; y <= people.size() - 1; y++) { boolean check = people.get(i).equals(people.get(y)); // Print comparison result System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName()); System.out.println(check); } }
Output:
Program ini akan mencetak sama ada orang yang dibandingkan adalah sama atau tidak . Contohnya:
-- Subash Adhikari - VS - K false -- Subash Adhikari - VS - StackOverflow false -- Subash Adhikari - VS - Subash Adhikari true
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Kaedah equals() dalam Java untuk Perbandingan Objek Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!