Java 8 Array Stream Filter - PullRequest
       21

Java 8 Array Stream Filter

0 голосов
/ 10 марта 2019

У меня есть один простой массив с пользовательским объектом, и я хочу фильтровать его с потоком 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;

Не могли бы вы подсказать, как мне перейти к фильтру потока в массиве NOT ON arrayList

В основном я хочу фильтровать только со значением "BName2".

1 Ответ

1 голос
/ 10 марта 2019

Если вы храните уникальный элемент в массиве, вы можете использовать следующий подход

Если объект уникален

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());

и список итераций

...