通过属性查找 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中文网其他相关文章!