Java按内部列表值分组 A类{ 私人收藏b; } B类{ 字符串字段; 私人收藏c; } C类{ 字符串名; }
现在我想通过循环collectionJava按内部列表值分组 A类{ 私人收藏b; } B类{ 字符串字段; 私人收藏c; } C类{ 字符串名; },java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,现在我想通过循环collectionB并将Name作为参数传递来检查类C(Name)中的值是否相等。我们如何使用Java中的streams实现这一点?这将通过筛选名称等于yourName的列表a,创建一个列表C class A { private Collection<B> b; } class B { String field; private Collection<C> c; } class C { String N
B
并将Name
作为参数传递来检查类C
(Name)中的值是否相等。我们如何使用Java中的streams实现这一点?这将通过筛选名称等于yourName
的列表a
,创建一个列表C
class A {
private Collection<B> b;
}
class B {
String field;
private Collection<C> c;
}
class C {
String Name;
}
列表列表a=。。。
List filteredA=listA.stream()
.map(A::getB)
.flatMap(集合::流)
.map(B::getC)
.flatMap(集合::流)
.filter(c->yourName.equals(c.getName()))
.collect(Collectors.toList());
您可以实现以下结果:
List<A> listA = ...
List<C> filteredA = listA.stream()
.map(A::getB)
.flatMap(Collection::stream)
.map(B::getC)
.flatMap(Collection::stream)
.filter(c -> yourName.equals(c.getName()))
.collect(Collectors.toList());
List result=myList.stream()
.flatMap(a->a.getB().stream())
.flatMap(b->b.getC().stream())
.filter(c->Objects.equals(c.getName(),searchName))
.collect(Collectors.toList());
这将从myList(
List
)创建一个流,然后连续展平嵌套集合以获得一个stream
,然后返回具有提供的searchName
的C
对象,最后将其收集到一个列表实例。检查完之后,您想要什么?获取包含该字符串名称的列表,或者?预期的输出是什么?不清楚您想要实现什么。一张地图
?您希望如何处理它是嵌套集合这一事实?重复A
?@MạnhQuyế特恩盖伊ễn是的,我想要显示类结构示例的CBeside列表,也要发布输入/开始状态示例和您期望得到的结果。没有它,你的问题就不太清楚了。不客气。稍后请明确说明您的预期输出和输入:)
List<C> result = myList.stream()
.flatMap(a -> a.getB().stream())
.flatMap(b -> b.getC().stream())
.filter(c -> Objects.equals(c.getName(), searchName))
.collect(Collectors.toList());