Rumah >Java >javaTutorial >Bagaimana untuk Mengatasi Kaedah equals() dalam Java untuk Perbandingan Objek Tepat?

Bagaimana untuk Mengatasi Kaedah equals() dalam Java untuk Perbandingan Objek Tepat?

Linda Hamilton
Linda Hamiltonasal
2024-12-26 21:15:14473semak imbas

How to Override the equals() Method in Java for Accurate Object Comparison?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn