gpt4 book ai didi

java - 使用 lambdaj 从嵌套数组中提取对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:08 26 4
gpt4 key购买 nike

我想用 lambdaj 从嵌套数组中提取一个对象。我的模型是一个包含“元素”数组的“产品”列表:

public class Product {
Element[] elements;
}
public class Element {
String code;
}

在我的代码中的某处,我有一个产品列表,我想在我的列表中找到一个具有特定代码的元素。

根据这个讨论:https://groups.google.com/forum/?fromgroups=#!topic/lambdaj/QQGmY3cVHP8 ,我可以使用:

select(myproductList,
having(on(Product.class).getElements()
.contains(selectUnique(elements,
having(on(Element.class).getCode(), equalTo("codeToFind"))));

但不幸的是,这不会编译,因为 getElements() 是一个数组而不是一个集合...

所以我最终得到了这个 java 代码:

 for (Product p : products) {
for (Element e : p.getElements()) {
if (e.getCode().equals("codeTofind")) {
return e;
}
}
}
return null;

有没有办法用 lambdaJ 遍历嵌套数组?

最佳答案

好的,我找到了解决方案:

selectFirst(flatten(extract(products, on(Product.class).getElements())),
having(on(Element.class).getCode(), equalTo("mycode")));

这将首先在一个独特的集合中选择并展平我的所有元素,然后在代码属性上对其进行过滤。

从性能的角度来看,我不确定它是否是最佳解决方案:看起来好像所有产品和元素在完成全面扫描之前都已展平。 (这里我对Lambdaj的理解太薄弱了,无法确定)

我认为完整的 java 实现更有效,因为它在第一个代码匹配时停止。

关于java - 使用 lambdaj 从嵌套数组中提取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com