我必须编写一个获取整数列表的方法,并通过添加" e"将其转换为字符串。在前面是一个数字,如果它是偶数或" u"如果它是不均匀的,然后用#34;,#34;分开它们。 示例:输入:带有数字的列表1,2,4,3 - >输出:" u1,e2,e4,u3和#34;。 问题是我必须使用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;
}
我如何在流中使用类似If语句的内容来决定是否放置&#34; e&#34;或&#34; u&#34;在数字前面?
答案 0 :(得分:7)
您可以将条件置于map
操作中。最简单的方法是使用三元条件运算符。
顺便说一句,没有理由将Integer
转换为String
,然后再将其解析为int
。
public static String getString(List<Integer> list){
return list.stream()
.map(i->i%2==0?"e"+i:"u"+i)
.collect(Collectors.joining(","));
}
编辑:您也可以使用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(","));
}