从 Java 集中获取 *any* 值的好方法?
给定一个简单的方法,什么是从中获取任何值的好方法(快速,几行代码) ?Set<T>
Set
使用 ,很容易:List
List<T> things = ...;
return things.get(0);
但是,对于 a ,没有方法,因为 s 不是有序的。Set
.get(...)
Set
给定一个简单的方法,什么是从中获取任何值的好方法(快速,几行代码) ?Set<T>
Set
使用 ,很容易:List
List<T> things = ...;
return things.get(0);
但是,对于 a ,没有方法,因为 s 不是有序的。Set
.get(...)
Set
A 是一个 ,因此迭代到第一个元素的工作原理是:Set<T>
Iterable<T>
Set<T> things = ...;
return things.iterator().next();
番石榴有一种方法可以做到这一点,尽管上面的片段可能更好。
由于存在流,因此您也可以这样做,但是您必须使用类 。 是元素的包装类或显式无元素(避免 Nullpointer)。java.util.Optional
Optional
//returns an Optional.
Optional <T> optT = set.stream().findAny();
//Optional.isPresent() yields false, if set was empty, avoiding NullpointerException
if(optT.isPresent()){
//Optional.get() returns the actual element
return optT.get();
}
编辑:正如我自己经常使用的那样:有一种方法可以访问元素或获取默认值,以防它不存在:
返回元素,或者如果不存在,则返回。 可能是,顺便说一句。Optional
optT.orElse(other)
other
other
null