Как зациклить объект списка и получить его элемент по индексу? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь перенести функцию из Java 7 в Java8, но я застрял при получении значения индексированного элемента во время цикла списка. Каков хороший способ сделать это?

вот код, который я пытаюсь перенести:

List<Employe> listEmploye = new ArrayList<>();
for(int i=0; i< ids.size();i++)
{
  Long idLong = Long.valueOf(ids.get(i));
  BigDecimal idBig= BigDecimal.valueOf(idLong);
  listEmploye.add(findByIdPointage(idBig));
}

Ответы [ 5 ]

0 голосов
/ 23 января 2019

Вам не нужно использовать потоки для этой задачи, но вы можете улучшить цикл for, если хотите:

List<Employe> listEmploye = new ArrayList<>();
ids.forEach(id -> listEmploye.add(findByIdPointage(new BigDecimal(id))));
0 голосов
/ 23 января 2019
public List<Employee> getEmployees(Set<String> ids) {
    return ids.stream()
              .map(id -> BigDecimal.valueOf(Long.parseLong(id)))
              .map(this::findByIdPointage)
              .collect(Collectors.toList());
}
0 голосов
/ 23 января 2019

В вашем текущем подходе нет ничего плохого, просто потому, что в Java 8 представлены лямбды и новые методы, это не означает, что вы должны их использовать.

Если вы хотите использовать потоки, вы можете сделать это ниже. Long.valueOf() сопоставление потенциально избыточно:

List<Employe> listEmploye = ids.stream()
   .map(Long::valueOf)
   .map(BigDecimal::valueOf)
   .map(this::findByIdPointage)
   .collect(Collectors.toList())
0 голосов
/ 23 января 2019

Вы можете использовать Stream API для отображения вашей коллекции:

List<Employe> listEmploye  = ids.stream()
.map(Long::valueOf)
.map(BigDecimal::valueOf)
.map(this::findByIdPointage)
.collect(Collectors.toList());
0 голосов
/ 23 января 2019
 List<Employe> listEmploye = ids.stream()
          .mapToLong(Long::parseLong)
          .mapToObj(BigDecimal::valueOf)
          .map(this::findByIdPointage)
          .collect(Collectors.toList());

Ну, есть конструктор BigDecimal, который принимает String, таким образом, это можно упростить до:

List<Employe> listEmploye = ids.stream()
           .map(BigDecimal::new) 
           .map(this::findByIdPointage)
           .collect(Collectors.toList())   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...