我想獲取集合的對象,我知道它只有一個元素(基本上它與Collections.singletonList()
的作用相反 - 但我不知道集合是否爲list/set /別的東西,所以我不能使用c.get(0)
)。獲取單體集合的對象
目前我使用c.iterator.next()
,如果已經存在了,在Java中或公共圖書館之一的方法(Apache的公地,番石榴等)
我想獲取集合的對象,我知道它只有一個元素(基本上它與Collections.singletonList()
的作用相反 - 但我不知道集合是否爲list/set /別的東西,所以我不能使用c.get(0)
)。獲取單體集合的對象
目前我使用c.iterator.next()
,如果已經存在了,在Java中或公共圖書館之一的方法(Apache的公地,番石榴等)
Iterables.getOnlyElement()
(或Iterables.getFirst()
,如果收集可以是空的)。
的方法簽名和JavaDoc難怪說清楚這是一個List
。
這是簽名:
public static <T> List<T> singletonList(T o)
這是JavaDoc中:
返回一個只包含指定對象的不可變列表。返回的列表是可序列化的。
因此,這意味着你可以簡單地使用:
List<MyClass> singleton = Collections.singletonList(myObject);
MyClass obj = singleton.get(0);
噢,現在我明白你的意思。我不得不承認你的問題很清楚。但是,由於某種原因,我不明白:)從番石榴
的OP沒有實際使用'singletonList'。他們想要的是與其所做的相反的事情:從任何「集合」中提取一個元素。 – 2012-07-30 08:08:43
大衛是對的,對不起,如果我沒有足夠清楚地解釋它 – Alex 2012-07-30 08:18:30
與Java 8,你可以這樣做:
collection.stream().findAny().get();
查看此解決方案的基準對照'collection.iterator()的.next()' – Beethoven 2016-09-16 16:34:17
截至2016/9/16鏈接被打破。使用https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Iterables.html – Beethoven 2016-09-16 16:35:56