我有一個for語句中的Java-7,它的做工精細:使用的if-else在Java的8 lambda表達式語句
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);
}
現在,我想我的代碼轉換爲Stream
& collect
在Java的8,我實現了我的業務的一半左右過濾器不爲空Ncourse
:
equivalentCourses.stream().filter(obj -> obj.getNcourse() != null)
.map(obj -> obj.getNcourse().getId()).collect(Collectors.joining(","));
,但我不知道要實現它的else-statement
。任何幫助?
爲什麼你使用'Character'代替'char'?這會讓你的代碼更難閱讀*和*浪費資源。儘管如此,如果用一個簡單的'ncourseIds.endsWith(「,)代替'!ncourseIds.isEmpty()&& ha.equals(ncourseIds.charAt(ncourseIds.length() - 1))',你根本不需要它。 「)'同樣,''pastCourseIds.isEmpty()&& cha.equals(pastCourseIds.charAt(pastCourseIds.length() - 1))''與'pastCourseIds.endsWith(」,「)'。要用流收集兩個字符串,可以簡單地執行兩個流操作。 – Holger
@Holger已經說過:使用兩個流操作(一個用於'getNcourse()!= null')和一個用於'getNcourse()== null && getPastCourse()!= null')。 –