如何在流中使用If语句?

戴维·J:

我必须编写一个获取整数列表并将其转换为字符串的方法,方法是在数字前加上“ 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;

}

我如何在流中使用诸如If语句之类的东西来确定是在数字前面放置“ e”还是“ u”?

他们是:

您可以将条件放入map操作中。最简单的方法是使用三元条件运算符。

顺便说一句,没有理由将转换IntegerString,然后再次将其解析为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(","));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章