utiliser des if-else dans java 8 expression lambda

J'ai une déclaration à java-7 et c'est un travail de l'amende:

Character cha = new Character(',');
String ncourseIds = null;
String pastCourseIds = null;
for (EquivalentCourse equivalentCourse : equivalentCourses) {
  if(equivalentCourse.getNcourse() != null){
    ncourseIds += equivalentCourse.getNcourse().getId()+ ",";   
  } else if(equivalentCourse.getPastCourse() != null) {
    pastCourseIds +=equivalentCourse.getPastCourse().getId()+","; 
  }
}
if(!ncourseIds.isEmpty() &&cha.equals(ncourseIds.charAt(ncourseIds.length()-1))) {
  ncourseIds = ncourseIds.substring(0, ncourseIds.length()-1);
}
if(!pastCourseIds.isEmpty()&& cha.equals(pastCourseIds.charAt(pastCourseIds.length()-1))) {
  pastCourseIds = pastCourseIds.substring(0,pastCourseIds.length()-1);
}

Maintenant je veux convertir mon code pour Stream & collect dans java 8, je mets en œuvre la moitié de mes affaires sur filtre pas null Ncourse:

equivalentCourses.stream().filter(obj -> obj.getNcourse() != null )
                 .map(obj -> obj.getNcourse().getId()).collect(Collectors.joining(",")); 

mais je ne sais pas à mettre en œuvre, c'est else-statement. toute aide?

  • Pourquoi utilisez-vous Character au lieu de char? Cela rend votre code plus difficile à lire et le gaspillage de ressources. Cependant, vous n'avez pas besoin, si vous remplacez !ncourseIds.isEmpty() && ha.equals(ncourseIds.charAt(ncourseIds.length()-1)) avec un simple ncourseIds.endsWith(",") et de la même manière, !pastCourseIds.isEmpty() && cha.equals(pastCourseIds.charAt(pastCourseIds.length()-1)) avec pastCourseIds.endsWith(","). Pour recueillir des deux chaînes avec des cours d'eau, vous pouvez simplement effectuer deux flux d'opérations.
  • déjà dit: l'utilisation de deux flux d'opérations (un pour getNcourse() != null et un pour getNcourse() == null && getPastCourse() != null).