我想得到一个我知道的集合的对象只有一个元素(基本上它与Collections.singletonList()
的反面相反 - 但是我不知道集合是列表/集合还是其他东西所以我不能使用c.get(0)
)。
目前我使用c.iterator.next()
,想知道在Java中是否已经存在一种方法或者其中一个公共库(apache-commons,guava等)。
答案 0 :(得分:7)
Iterables.getOnlyElement()
(或Iterables.getFirst()
,如果集合可以为空)。
答案 1 :(得分:3)
方法签名和JavaDoc清楚地说它是List
。
这是签名:
public static <T> List<T> singletonList(T o)
这是JavaDoc:
返回仅包含指定对象的不可变列表。返回的列表是可序列化的。
所以,这意味着你可以简单地使用:
List<MyClass> singleton = Collections.singletonList(myObject);
MyClass obj = singleton.get(0);
噢,现在我明白了你的意思。我不得不承认你的问题很明确。但由于一个或另一个原因,我不明白:))
答案 2 :(得分:1)
使用Java 8,您可以:
collection.stream().findAny().get();