2013-08-22 61 views
0

我使用返回這樣一個列表中的API:從現有集合中提取特定的元素,並把它變成一個新的集合

List<Object[]> results = query.getResultList(); 

Object[]每個項目都是這樣

Array[MyObject, String , String] 
數組

我想每個陣列(「爲MyObject」)的第一個元素,並把他們都在一個新的列表

List<MyObject> myObjects. 

我想知道是否使用Collections類或類似的東西而不是算法解決方案來完成此操作的整潔方式?

+1

只是循環通過並提取/創建你想要的。 –

+0

是的,事實證明這是一個愚蠢的問題。我喜歡@Josh的java 8解決方案,雖然 – jax

+0

僅供參考,但使用像這樣的Object []是一種非常糟糕的設計氣味。你應該有一個實際包含一個'MyObject'和兩個'String'的類。 –

回答

1

好吧,如果我理解正確的問題,你可以做這樣的事情:

for(final Object[] result : results) 
    myObjects.add((MyObject)result[0]); 

或者,如果您使用的是Java 8,你可以嘗試這樣的事:

results.forEach(result -> myObjects.add((MyObject)result[0])); 
+0

發佈日期是什麼時候? –

+0

@ user2310289我有點不確定官方發佈日期,但您可以早點訪問[這裏](https://jdk8.java.net/lambda/)。我一直在使用Java 8已經有一段時間了,我覺得它非常棒。儘管它減少了線條的數量,但取決於你想要做的事情,線條有時會變長。但除此之外,這很棒。 –

相關問題