【问题标题】:Map values to ArrayList将值映射到 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 是一个字段,不是扩展类

标签: java dictionary arraylist


【解决方案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 需要用谷歌搜索错误消息。
  • 完成!伙计们!我只需要在项目属性中更改项目语言级别。 stackoverflow.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
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多