Dav*_* J. 5 java if-statement java-8 java-stream
我必须编写一个获取整数列表并将其转换为字符串的方法,如果它是偶数则在前面添加"e",如果不均匀则在"u"中添加,然后用","分隔它们.示例:输入:带有数字的列表1,2,4,3 - >输出:"u1,e2,e4,u3".问题是我必须使用lambda表达式和流来完成它,我不知道如何用它们区分均匀和不均匀的数字.
如果我这样做,我只能做偶数或不均匀的数字:
public static String getString(List<Integer> list){
String s = list.stream()
.map(Object::toString)
.filter(i->Integer.parseInt(i)%2==0)
.map(i->"g"+i)
.collect(Collectors.joining(","));
return s;
}
Run Code Online (Sandbox Code Playgroud)
如何在流中使用类似If语句的内容来决定是否在数字前加上"e"或"u"?
您可以将条件置于map操作中.最简单的方法是使用三元条件运算符.
顺便说一句,没有理由将其转换Integer为a String然后再将其解析为int.
public static String getString(List<Integer> list){
return list.stream()
.map(i->i%2==0?"e"+i:"u"+i)
.collect(Collectors.joining(","));
}
Run Code Online (Sandbox Code Playgroud)
编辑:你也可以使用一个if-else声明,但这看起来不那么优雅:
public static String getString(List<Integer> list){
return list.stream()
.map(i -> {
if (i%2==0) {
return "e"+i;
} else {
return "u"+i;
}
})
.collect(Collectors.joining(","));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |