【发布时间】:2017-02-02 18:02:36
【问题描述】:
从here,有一种方法可以获取嵌套Optional 的值或默认值:
Optional<Computer> maybeComputer = Optional.of(computer);
String version = maybeComputer.flatMap(Computer::getSoundcard).flatMap(Soundcard::getUsb).map(USB::getVersion).orElse("UNKNOWN");
或
Computer computer = ...;
String version = computer.getSoundcard().flatMap(Soundcard::getUsb).map(USB::getVersion).orElse("UNKNOWN");
但是,我如何获得所有收藏计算机的所有版本? - List<Computer>
例如,如何使用stream API 打印所有USB 版本,包括unknown?
或
如何将所有计算机映射到其声卡的 USB 版本,包括 unknown 的?
谢谢。
计算机类:
public static class Computer {
private Optional<Soundcard> soundcard;
public Computer(Optional<Soundcard> soundcard) {
this.soundcard = soundcard;
}
public Optional<Soundcard> getSoundcard() {
return soundcard;
}
}
public static class Soundcard {
private Optional<USB> usb;
public Soundcard(Optional<USB> usb) {
this.usb = usb;
}
public Optional<USB> getUsb() {
return usb;
}
}
public static class USB {
private String version;
public String getVersion() {
return version;
}
}
【问题讨论】:
-
List<Computer>中没有 Optional。你到底想做什么? -
@Tunaki - 添加了
Computer类定义。
标签: java collections java-8 java-stream optional