首頁 >Java >java教程 >如何根據特定屬性有效率地從ArrayList中檢索物件?

如何根據特定屬性有效率地從ArrayList中檢索物件?

Patricia Arquette
Patricia Arquette原創
2024-12-04 02:13:09136瀏覽

How to Efficiently Retrieve Objects from ArrayLists Based on Specific Properties?

根據屬性從ArrayList中擷取物件

在物件導向程式設計中,常常會遇到需要透過屬性來定位物件的場景集合中的特定屬性。這在 Java EE 等框架中特別有用,您可能在其中使用 POJO 並需要從記憶體快取中檢索物件。

考慮一個場景,其中您正在管理 Carnet 物件列表,每個都擁有 codeTitre、nomTitre 和 codeIsin 等屬性。假設您需要根據其 codeIsin 來尋找特定的 Carnet 物件。為了實現這一點,您可以利用 Java 流的強大功能:

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

此程式碼片段利用流來有效地搜尋 Carnet 物件集合,過濾掉那些與給定 codeIsIn 條件不匹配的物件。透過利用 findFirst() 方法,您可以檢索第一個匹配的對象,如果沒有找到對象,則傳回 null。

您也可能會遇到需要尋找具有不同屬性或跨多種類型物件的物件的情況。為了解決這個問題,您可以引入像 FindUtils 這樣的實用程式類別:

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

這個實用程式類別提供了一個通用方法,可用於根據任何指定的條件搜尋物件。

此外,您可以為每種物件類型建立特定的實用程式類,例如CarnetUtils:

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 finding by other properties
}

透過使用這些實用程式類,您可以輕鬆靈活地搜尋ArrayList 中的對象,無論其具體屬性為何。

以上是如何根據特定屬性有效率地從ArrayList中檢索物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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