6
votes

Comment boucler un objet de liste et obtenir son élément par index?

J'essaie de migrer une fonction de java 7 vers java8 mais je suis bloqué sur l'obtention de la valeur de l'élément indexé lors de la boucle d'une liste. Quelle est la bonne façon de procéder?

voici le code que j'essaye de migrer:

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


2 commentaires

Quel type est la collection d'identifiants?


le type de liste d'identifiants est String


5 Réponses :


3
votes
List<Employe> listEmploye = ids.stream()
           .map(BigDecimal::new) 
           .map(this::findByIdPointage)
           .collect(Collectors.toList())   

0 commentaires

1
votes

Il n'y a rien de mal avec votre approche actuelle, ce n'est pas parce que Java 8 introduit des lambdas et de nouvelles méthodes que vous devez les utiliser.

Si vous voulez utiliser des flux, vous pouvez le faire ci-dessous. Le mappage Long.valueOf () est potentiellement redondant:

List<Employe> listEmploye = ids.stream()
   .map(Long::valueOf)
   .map(BigDecimal::valueOf)
   .map(this::findByIdPointage)
   .collect(Collectors.toList())


0 commentaires

7
votes

Vous pouvez utiliser l'API Stream pour mapper votre collection:

List<Employe> listEmploye  = ids.stream()
.map(Long::valueOf)
.map(BigDecimal::valueOf)
.map(this::findByIdPointage)
.collect(Collectors.toList());


0 commentaires

2
votes
public List<Employee> getEmployees(Set<String> ids) {
    return ids.stream()
              .map(id -> BigDecimal.valueOf(Long.parseLong(id)))
              .map(this::findByIdPointage)
              .collect(Collectors.toList());
}

0 commentaires

0
votes

Vous n'avez pas besoin d'utiliser des flux pour cette tâche, mais vous pouvez améliorer votre boucle for si vous le souhaitez:

List<Employe> listEmploye = new ArrayList<>();
ids.forEach(id -> listEmploye.add(findByIdPointage(new BigDecimal(id))));


0 commentaires