将值映射到 ArrayList
Posted
技术标签:
【中文标题】将值映射到 ArrayList【英文标题】:Map values to ArrayList 【发布时间】:2016-07-02 19:01:50 【问题描述】:我有一个 Map<Integer, MyClass>
和 MyClass
有 2 个字段,例如 Object1 obj
和 Object2 objj
。
如何创建一个包含所有 Object2
值的 ArrayList<Object2>
?
我必须迭代 Map
然后将值添加到 ArrayList
还是以其他方式存在?
【问题讨论】:
如果您只想要ArrayList<Object2>
而不是ArrayList<MyClass>
,那么您必须迭代并检查instanceof Object2
以获得这些类。
Object2 是一个字段,不是扩展类
【参考方案1】:
如果你使用的是 Java 8,你可以这样做:
List<Object2> list = map.values()
.stream()
.map(v -> v.objj)
.collect(Collectors.toList());
如果您使用的是 Java 7 或更早版本,solution of @Marv 是最简单的。
【讨论】:
@HugoSilva 是的,那是 Java 8。我不确定为什么这不起作用。虽然我没有测试过,但我认为我没有打错。 @RodrigoSasaki 谢谢。我猜 OP 需要用谷歌搜索错误消息。 完成!伙计们!我只需要在项目属性中更改项目语言级别。 ***.com/questions/14659554/use-source-7-or-higher【参考方案2】:您可以遍历 Map
的值:
ArrayList<Object2> list = new ArrayList<>();
for (MyClass e : map.values())
list.add(e.objj);
【讨论】:
【参考方案3】:结帐如下:
How to convert a Map to List in Java?
它有一个衬里 sn-p 来回答你的问题。
List<Object2> list = new ArrayList<Object2>(map.values());
假设:
Map<Integer, MyClass> map;
【讨论】:
不完全是,因为 map.values() 会给你 Collection以上是关于将值映射到 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章