【问题标题】:java replaceAll with java lambda or java stream (from String[]) [closed]java replaceAll 用 java lambda 或 java 流(来自 String [])[关闭]
【发布时间】:2018-03-25 13:25:46
【问题描述】:

我想用空值 (replaceAll(".ini", "") 替换所有 .ini,但要使用 java lambda 或 java 流。

重要提示:请不要发布带有 for 循环的解决方案,...(仅限 java lambda 或 java 流响应)。

public static void main(String[] args) {
    List<String> applications = new ArrayList<>();
    String[] strings = { "1.ini", "2.ini", "3.ini" };
    applications.addAll(Arrays.asList(strings));
    for (String string : applications) {
        System.out.println(string);
    }
}

实际结果:

1.ini
2.ini
3.ini

想要的结果:

1
2
3

【问题讨论】:

  • 下次我建议发布您的尝试,这不是代码交付服务。
  • for 循环非常适合这里。你为什么要避免它?有人威胁你吗?闪烁一次表示是。
  • 我的问题是“如何使用 for 循环的流实例”。减去详细代码

标签: java lambda java-stream


【解决方案1】:

您可以使用map 转换输入Strings:

List<String> applications =     
    Arrays.stream(strings)
          .map(s->s.replace(".ini",""))
          .collect(Collectors.toList());

【讨论】:

    【解决方案2】:

    如果您对修改applications ArrayList 感到满意,那么您可以使用replaceAll 方法:

    applications.replaceAll(e -> e.replace(".ini",""));
    

    否则,如果您希望将结果放在新集合中,那么您可以这样做:

    List<String> resultSet = 
               Arrays.stream(strings)
                     .map(e -> e.replace(".ini",""))
                     .collect(Collectors.toCollection(ArrayList::new));
    

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 2011-07-08
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2016-12-06
      相关资源
      最近更新 更多