java - JAVA 8流的现有条件

标签 java java-8 java-stream

如何将以下条件转换为 Java 8 流方式?

    List<String> name = Arrays.asList("A", "B", "C");
    String id;
    if(name.contains("A")){
        id = "123";
    }else if(name.contains("B")){
        id = "234";
    }else if(name.contains("C")){
        id = "345";
    }

我正在学习 Streams,想知道如何转换它。我尝试使用 foreach、map、filter,但没有成功

最佳答案

另一个(但紧凑)解决方案:

Arrays.asList("B", "C", "A", "D").stream()
        .map(s -> s.equals("A") ? new SimpleEntry<>(1, "123")
                : s.equals("B") ? new SimpleEntry<>(2, "234")
                : s.equals("C") ? new SimpleEntry<>(3, "345")
                : null)
        .filter(x -> x != null)
        .reduce((a, b) -> a.getKey() < b.getKey() ? a : b)
        .map(Entry::getValue)
        .ifPresent(System.out::println);

关于java - JAVA 8流的现有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42947396/

相关文章:

java - Java 8 中函数类型全等 lambda 表达式的使用

java - 将 List<List<Object>> 转换为 Map<String,String> Java 8

java - 如何将整数流过滤到列表中?

java - Xpath - 使用多个属性和部分文本的复合语句

java - 尝试通过 JMX 连接时,本地 Java 进程呈灰色

java - Idea + Play Framework - 无法解析方法/符号

java - 提示 Yosemite 上的 Java 版本过时但安装了 Java 1.8 的想法

java-8 - 如何从jdbc结果集中返回java8 Stream

java - 如何将 CSV 文件转换为 List<Map<String,String>>

java - swing中视觉组件的动态更新