如何将以下条件转换为 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/