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

时间:2018-03-16 01:55:17

标签: java-8 optional

Optional<List<Long>> optionalList = getList(someInput);

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

2 个答案:

答案 0 :(得分:3)

您可以打开列表,将其用作普通列表。

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

如果您只想要forEach(..)而不需要打开列表。

optionalList.orElseGet(Collections::emptyList)
    .forEach(System.out::println);

您可以检查是否存在

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

或继续使用optional来访问其中一个元素

Optional<Long> longAt5 = optionalList.filter(list -> list.size() > 5)
    .map(list -> list.get(5));

答案 1 :(得分:1)

检查是否存在值,然后执行一些逻辑:

optionalList.ifPresent(list -> {
     ...
});

至于处理清单,你可以这样做:

optionalList.orElseGet(() -> Collections.emptyList()).forEach(e -> {...});