将值映射到 ArrayList

Posted

技术标签:

【中文标题】将值映射到 ArrayList【英文标题】:Map values to ArrayList 【发布时间】:2016-07-02 19:01:50 【问题描述】:

我有一个 Map<Integer, MyClass>MyClass 有 2 个字段,例如 Object1 objObject2 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 而不是 Object2

以上是关于将值映射到 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

将值映射到“即时”文本

Gatling 2.0.3 - 将值映射到模板

将值映射到色标

Informatica 是不是可以将值从 informatica 映射动态传递到 oracle 中的视图

Immutable.js 将值映射到数组

如何将值映射到python中的模糊项