我有一个带有自定义对象的简单数组,并希望使用java 8流进行过滤。
A[] aArray = new A[3];
A a1 = new A();
a1.setaId(1);
a1.setaName("AName1");
B b1 = new B();
b1.setbId(1);
b1.setbName("BName1");
a1.setB(b1);
aArray[0] = a1;
A a2 = new A();
a2.setaId(2);
a2.setaName("AName2");
B b2 = new B();
b2.setbId(2);
b2.setbName("BName2");
a2.setB(b2);
aArray[1] = a2;
你能建议我如何在数组上不进行过滤吗?
基本上我只想使用“ BName2”值进行过滤。
最佳答案
如果要在数组中存储唯一元素,则可以使用以下方法
如果对象是唯一的
A aWithValidString = Arrays.stream(aArray)
.filter(a -> "BName2".equals(a.getB().getbName()))
.finAny().orElse(null);
如果数组中有多个带有“ Bname2”字符串的对象,则可以使用以下代码
List<A> filteredObject = Arrays.stream(aArray)
.filter(a -> "BName2".equals(a.getB().getbName()))
.collect(Collectors.toList());
和迭代列表