Java 8 如何获取可选列表中特定索引处的元素? optionalList=getList(someInput);

Java 8 如何获取可选列表中特定索引处的元素? optionalList=getList(someInput);,java-8,optional,Java 8,Optional,如何从该列表中检索元素? 如何迭代此列表?您可以将列表展开,并像普通列表一样使用它 Optional<List<Long>> optionalList = getList(someInput); 你可以检查一下是否有 optionalList.orElseGet(Collections::emptyList) .forEach(System.out::println); if(optionalList.isPresent()){ List myList=opt

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

您可以将列表展开,并像普通列表一样使用它

Optional<List<Long>> optionalList = getList(someInput);
你可以检查一下是否有

optionalList.orElseGet(Collections::emptyList)
    .forEach(System.out::println);
if(optionalList.isPresent()){
List myList=optionalList.get();
//存在过程列表
}否则{
//过程不存在
}
或者继续使用optional访问其中一个元素

if (optionalList.isPresent()) {
    List<Long> myList = optionalList.get();
    // process list present
} else {
    // process not present
}
Optional longAt5=optionalList.filter(list->list.size()>5)
.map(list->list.get(5));

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

Optional<Long> longAt5 = optionalList.filter(list -> list.size() > 5)
    .map(list -> list.get(5));
至于处理列表,您可以执行以下操作:

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

如果您想避免if检查,那么可能-->
optionalList.orElse(Collections.emptyList()).forEach(e->{…})?检索索引(比如5)处的元素如何?检查可选项中是否存在值,然后对列表执行任何操作。两个答案已经向您展示了如何做。另外
orElseGet(Collections::emptyList)
我认为
Collections.emptyList
使用
Supplier
并没有那么昂贵,因为iti倾向于尽可能选择方法引用,我错过了
forEach(…)
,changed中的方法引用。
optionalList.ifPresent(list -> {
     ...
});
optionalList.orElseGet(() -> Collections.emptyList()).forEach(e -> {...});