【问题标题】:ForEach to convert all string to upper case [duplicate]ForEach 将所有字符串转换为大写 [重复]
【发布时间】:2018-09-19 22:30:07
【问题描述】:

看这段代码:

import java.util.Arrays;
import java.util.List;

public class LmadaExperiment {

    public static void main(String args[]) {

        List<String> li = Arrays.asList("One", "Two", "Three");

        li.forEach(element -> element.toUpperCase());

        li.forEach(System.out::print);

    }
}

猜猜这个答案是什么?

答案:它没有转换成大写。

有人知道为什么吗?

【问题讨论】:

  • 正在转换每个字符串。然后无视结果。您想改用replaceAllli.replaceAll(element -&gt; element.toUpperCase());li.replaceAll(String::toUpperCase);

标签: foreach java-8


【解决方案1】:

toUpperCase函数返回字符串,所以需要设置element = element.toUpperCase()

【讨论】:

    【解决方案2】:

    forEach 不会使用 element 作为参考。你实际上并没有操纵element,只是它的表示。

    您可以使用map 来实际操作数组,也可以使用System.out.print 每个元素toUpperCase

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class LmadaExperiment {
    
        public static void main(String args[]) {
    
            List<String> li = Arrays.asList("One", "Two", "Three");
    
            List<String> li_uc= li.stream().map(String::toUpperCase).collect(Collectors.asList());
    
            li_uc.forEach(System.out::print);
    
        }
    }
    

    【讨论】:

    • 我无法实际测试它,但我不认为即使你这样做“li.forEach(element -> element = element.toUpperCase());”它会给你想要的结果。
    猜你喜欢
    • 2013-09-03
    • 2022-01-19
    • 2018-09-16
    • 1970-01-01
    • 2020-12-05
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多