Итерация вложенного списка java с использованием потока Java8 - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть Java список EmployObject, подобный этому

List<Employee> emp = {emp1, emp2, emp3, emp4 ,...}

Where the Employee class looks like this 

Public Class Employee {
    String EmpId;
    EmpInfo empInfo;
}

public class EmpInfo {
   String salary;
   String address;
   List<Reviews> reviews;
}

public class Reviews {
   int ratings;
   boolean isGood;
}

Я хочу использовать потоки Java8 для итерации по списку (List emp) и фильтрации EmpId, который имеет более одного рейтинга (List длина> 1) и чей рейтинг хороший (isGood == true). Новый список будет выглядеть так:

List empRating = {empRating1, empRating2, ...}

public class EmpRating {
   String empId;
   int ratings;
}


Я пробовал разные вещи, но не смог найти оптимизированное решение. Нужна помощь с этим.

1 Ответ

2 голосов
/ 21 апреля 2020

Просто пример:

  • выбор сотрудников, имеющих хотя бы один рейтинг isGood
  • расчет суммы всех рейтингов
employeeList.stream()
    .filter(emp -> emp.getEmpInfo().getReviews().size() > 1
                && emp.getEmpInfo().getReviews().stream().anyMatch(Reviews::isGood))
    .map(emp -> new EmpRating(
        emp.getEmpId(), 
        emp.getEmpInfo().getReviews().stream().mapToInt(Reviews::getRatings).sum()
    ))
    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...