如何获取可选列表中特定索引处的元素?

Gan*_*nga 3 optional java-8

Optional<List<Long>> optionalList = getList(someInput);
Run Code Online (Sandbox Code Playgroud)

如何从此列表中检索元素?如何迭代这个列表?

Jos*_*lva 5

您可以打开列表并像普通列表一样使用它。

List<Long> list = optionalList.orElseGet(Collections::emptyList);
list.forEach(System.out::println); // process the list 
                                   // e.g. printing its elements
Run Code Online (Sandbox Code Playgroud)

如果您只想要一个forEach(..)并且不需要解开列表。

optionalList.orElseGet(Collections::emptyList)
    .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

您可以检查是否存在

if (optionalList.isPresent()) {
    List<Long> myList = optionalList.get();
    // process list present
} else {
    // process not present
}
Run Code Online (Sandbox Code Playgroud)

或者继续使用 optional 来访问其元素之一

Optional<Long> longAt5 = optionalList.filter(list -> list.size() > 5)
    .map(list -> list.get(5));
Run Code Online (Sandbox Code Playgroud)