【问题标题】:How to manipulate loop using Java 8 and streams如何使用 Java 8 和流操作循环
【发布时间】:2022-07-21 20:59:09
【问题描述】:

我正在编写一个简单的代码来迭代一个循环并检查它是否包含特定的字符串。如果是这样,请修改字符串变量。下面是代码--

        String name = null;
        String value = "Anand";
        List<String> names = new ArrayList<String>();
        names.add("Anand");
        for (String s: names) {
            if (s.equals(value)) {
                name = value;
            }
        }

但是,我想知道是否有更好、更简洁的方法来使用 Java 8 流和过滤器 API。

任何关于此的指针将不胜感激。

【问题讨论】:

  • 在什么方面更好?流并不总是比一些常规的东西更好,特别是如果它们是微不足道的。
  • Optional&lt;String&gt; name = names.stream().findFirst(value::equals);

标签: java loops java-stream


【解决方案1】:

有很多运营商可以帮助实现这一点。
我们可以试试下面的代码:

name = names.stream().filter(e -> e.equals(value)).findAny().orElse(null);

【讨论】:

    【解决方案2】:

    你可以试试这个方法:

    AtomicReference<String> name = new AtomicReference<>();
    String value = "Anand";
    List<String> names = new ArrayList<>();
    names.add("Anand");
    names.stream().filter(s -> s.equals(value)).findFirst().ifPresent(name::set);
    System.out.println(name.get());
    

    【讨论】:

      【解决方案3】:
              String name = null;
              String value = "Anand";
              List<String> names = new ArrayList<String>();
              names.add("Anand");
              //this method only find the first one string in this list
              if (names.stream().findFirst().isPresent()) {
                  name = names.stream().findFirst().get();
                  System.out.println(name);
              } else {
                  System.out.println("name is empty");
              }
      

      【讨论】:

        【解决方案4】:

        下面是我要做的:

        String name = null;
        String value = "Anand";
        List<String> names = new ArrayList<String>();
        names.add("Anand");
        name = names.stream().filter(s -> s.equals(value)).collect(Collectors.joining());
        System.out.println(name);
        

        【讨论】:

        • 或 .findFirst() 而不是 .collect
        猜你喜欢
        • 1970-01-01
        • 2018-11-19
        • 2017-05-09
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 2016-10-09
        • 1970-01-01
        • 2020-02-25
        相关资源
        最近更新 更多