我有一個Map<Integer, MyClass>
和MyClass
有2個字段,例如Object1 obj
和Object2 objj
。將值映射到ArrayList
如何創建一個ArrayList<Object2>
以及所有Object2
值?
必須重複Map
,然後將值添加到ArrayList
或存在另一種方式?
我有一個Map<Integer, MyClass>
和MyClass
有2個字段,例如Object1 obj
和Object2 objj
。將值映射到ArrayList
如何創建一個ArrayList<Object2>
以及所有Object2
值?
必須重複Map
,然後將值添加到ArrayList
或存在另一種方式?
你可以遍歷Map
值:
ArrayList<Object2> list = new ArrayList<>();
for (MyClass e : map.values()) {
list.add(e.objj);
}
如果您使用的是Java 8,你可以這樣做:
List<Object2> list = map.values()
.stream()
.map(v -> v.objj)
.collect(Collectors.toList());
如果您使用的是Java 7或更早版本的解決方案@Marv是最簡單的。
@HugoSilva是的,這是Java 8.我不知道爲什麼這不起作用。我不認爲我犯了一個錯字,雖然我沒有測試過。 –
@PaulBoddington你的代碼是正確的 –
@RodrigoSasaki非常感謝。我想OP需要谷歌錯誤信息。 –
結帳以下:
How to convert a Map to List in Java?
它對於你的問題一個襯墊片段。
List<Object2> list = new ArrayList<Object2>(map.values());
假設:
Map<Integer, MyClass> map;
如果你只是想ArrayList的''而不是ArrayList的'',那麼你必須遍歷和檢查'的instanceof Object2'得到這些類。 –