【问题标题】:Switch for and foreach切换 for 和 foreach
【发布时间】:2019-10-06 11:40:56
【问题描述】:

我需要在这种方法中将我的 for 循环更改为 foreach 循环,我该怎么做? (必要时可以加全类)

public String decode(String input) {
    String[] letters = input.split(" ");
    StringBuilder ret = new StringBuilder();

    for(int i=0; i<letters.length; i++)
        ret.append(decodeMap.get(letters[i]));
    return ret.toString();
}

【问题讨论】:

    标签: java for-loop foreach switching


    【解决方案1】:

    您应该指定您使用的语言。我假设java。使用for(datatype var : collection)。 这是它的样子

    public String decode(String input) {
        String[] letters = input.split(" ");
        StringBuilder ret = new StringBuilder();
        for(String s : letters){
                    ret.append(decodeMap.get(s));
        }
        return ret.toString();
    }
    

    【讨论】:

      【解决方案2】:

      为了避免不必要地创建StringBuilder,我建议这样做(假设您使用的是Java 8+):

          public String decode(String input) {
              String[] letters = input.split(" ");
              return Arrays.stream(letters)
                           .map(decodeMap::get)
                           .collect(Collectors.joining());
          }
      

      【讨论】:

      • "我建议..." 为什么?另外,.map(decodeMap::get)
      • 这并没有回答关于 for 循环的问题
      • 另外,是什么让您认为您的方法更好或更快? Streams API 并不总是比传统的 foreach 循环快。
      • 这就是为什么它被写成建议 - 给出如何改进代码的想法。现在还包括解释原因:避免不必要地创建 StringBuilder。
      • 好吧,StringBuilder 的创建不是必需的,它比普通的字符串连接要快。使用更少的变量并不总是一种改进。
      猜你喜欢
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多