首頁 >Java >java教程 >如何有效率地透過屬性來尋找Java ArrayList中的物件?

如何有效率地透過屬性來尋找Java ArrayList中的物件?

Susan Sarandon
Susan Sarandon原創
2024-12-04 15:39:11273瀏覽

How to Efficiently Find an Object in a Java ArrayList by Property?

透過屬性來尋找ArrayList 中的物件

處理ArrayList 中儲存的大型資料集時,根據某個屬性尋找特定物件可以證明具有挑戰性。本文探討了針對此場景的有效解決方案,特別關注透過 codeIsin 屬性搜尋 Carnet 物件的 ArrayList。

Java 8 流方法:

Java 8 引入了強大的流API,提供了一種優雅簡潔的方式來對集合進行操作。若要透過屬性尋找 ArrayList 中的對象,可以使用stream()函數建立元素流,然後使用filter()函數過濾掉與所需屬性不符的元素。最後,使用 findFirst() 函數檢索第一個符合元素,如果沒有找到則傳回 null。

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

實用類別方法方法:

這個方法涉及建立一個具有靜態方法的實用程式類,該類別封裝了不同屬性的搜尋邏輯。這確保了可重用性和模組化。 FindUtils 類別提供通用的 findByProperty() 方法,該方法接受集合和謂詞函數作為參數。謂詞函數定義過濾集合的條件。

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()));
    }

    public static Carnet findByNomTitre(Collection<Carnet> listCarnet, String nomTitre) {
        return FindUtils.findByProperty(listCarnet, carnet -> nomTitre.equals(carnet.getNomTitre()));
    }

    public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsin) {
        return FindUtils.findByProperty(listCarnet, carnet -> codeIsin.equals(carnet.getCodeIsin()));
    }
}

以上是如何有效率地透過屬性來尋找Java ArrayList中的物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn