我有一个带有自定义对象的简单数组,并希望使用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());


和迭代列表

10-06 11:55