Rumah >Java >javaTutorial >Bagaimana untuk Cekap Mencari Objek dalam ArrayList mengikut Nilai Harta?

Bagaimana untuk Cekap Mencari Objek dalam ArrayList mengikut Nilai Harta?

Susan Sarandon
Susan Sarandonasal
2024-12-06 20:58:13778semak imbas

How to Efficiently Find an Object in an ArrayList by Property Value?

Mencari Objek dalam ArrayList mengikut Harta

Memandangkan ArrayList yang mengandungi objek kelas Carnet, bagaimana kita boleh mendapatkan semula objek tertentu berdasarkan pada nilai harta tertentu, seperti codeIsin?

Penyelesaian (Java 8 Stream):

Dalam Java 8, kami boleh memanfaatkan aliran untuk melaksanakan operasi ini dengan ringkas:

public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
    return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}

Pendekatan Kelas Utiliti (Pilihan):

Jika kita perlukan untuk melakukan carian sedemikian merentas banyak kelas yang berbeza atau untuk sifat yang berbeza-beza, kita boleh merangkum logik ini dalam kelas utiliti:

public final class FindUtils {
    public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) {
        return col.stream().filter(filter).findFirst().orElse(null);
    }
}

public final class CarnetUtils {
    public static Carnet findByCodeTitre(Collection<Carnet> listCarnet, String codeTitre) {
        return FindUtils.findByProperty(listCarnet, carnet -> codeTitre.equals(carnet.getCodeTitre()));
    }

    // Similar methods for other properties (e.g., findByNomTitre, findByCodeIsIn)
}

Pendekatan ini menyediakan penyelesaian yang lebih boleh digunakan semula dan membolehkan pengubahsuaian mudah bagi kriteria carian.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Objek dalam ArrayList mengikut Nilai Harta?. 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