透過屬性來尋找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中文網其他相關文章!