2016-03-16 81 views
0

我有一個Map<Integer, MyClass>MyClass有2個字段,例如Object1 objObject2 objj將值映射到ArrayList

如何創建一個ArrayList<Object2>以及所有Object2值?

必須重複Map,然後將值添加到ArrayList或存在另一種方式?

+2

如果你只是想ArrayList的''而不是ArrayList的'',那麼你必須遍歷和檢查'的instanceof Object2'得到這些類。 –

回答

5

你可以遍歷Map值:

ArrayList<Object2> list = new ArrayList<>(); 

for (MyClass e : map.values()) { 
    list.add(e.objj); 
} 
5

如果您使用的是Java 8,你可以這樣做:

List<Object2> list = map.values() 
         .stream() 
         .map(v -> v.objj) 
         .collect(Collectors.toList()); 

如果您使用的是Java 7或更早版本的解決方案@Marv是最簡單的。

+0

@HugoSilva是的,這是Java 8.我不知道爲什麼這不起作用。我不認爲我犯了一個錯字,雖然我沒有測試過。 –

+0

@PaulBoddington你的代碼是正確的 –

+1

@RodrigoSasaki非常感謝。我想OP需要谷歌錯誤信息。 –

2

結帳以下:

How to convert a Map to List in Java?

它對於你的問題一個襯墊片段。

List<Object2> list = new ArrayList<Object2>(map.values()); 

假設:

Map<Integer, MyClass> map;