【问题标题】:Map<String, List<Integer>> to List in JavaMap<String, List<Integer>> 到 Java 中的 List
【发布时间】:2017-09-22 13:33:28
【问题描述】:

是否可以将 Map> 更改为单个列表?

    List<Integer> list1 = new ArrayList<Integer>();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list1.add(4);
    List<Integer> list2 = new ArrayList<Integer>();
    list2.add(100);
    list2.add(400);
    list2.add(500);
    list2.add(700);

    Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
    map.put ("account_number", list1);
    map.put ("Amount", list2);

    System.out.println(map);
    map: {Amount=[100, 400, 500, 700], account_number=[1, 2, 3, 4]}

    List<String> list3 = new ArrayList<String>();
    List<int> list4 = new ArrayList<int>();

现在我想将地图更改为列表 (list3, list4)。

   Expected: map -> list3, list 4

   list3               list4
   Amount              100
   Amount              400
   Amount              500
   Amount              700
   account_number      1
   account_number      2
   account_number      3
   account_number      4

我尝试过,map.keySet(), map.values() 将它们放入单独的列表(list3, list4) 但无法实现

我该怎么做?

【问题讨论】:

  • 这闻起来很像X/Y problem,原来的要求是什么?
  • 问题指定错误;从接受的答案来看,您真正想要的是一个包含所有键的列表和一个包含所有值的(平面、非分层)列表,对吗?
  • 在结尾处,有一个准确列出所需内容的列表。有可能这个问题的措辞可以更清楚一点,但如果一个人真正阅读了整件事,那么 OP 试图完成的事情就很明显了。
  • @JamieBisotti 是否可以根据 list3、list4 获取唯一序列号到 list5 中?

标签: java collections


【解决方案1】:

类似这样的东西(我徒手写的;可能无法编译):

for (final Entry<String, List<Integer> entry : map.entrySet()) {
    final String key = entry.getKey();
    final List<Integer> value = entry.getValue();
    for (final Integer val : value) {
        list3.add(key);
        list4.add(val);
    }
}

【讨论】:

  • 是的,这似乎可行:repl.it/L3cv/0 我认为您是唯一了解 OP 实际要求的人。
【解决方案2】:

Map.keySet() 返回一组键,您可以使用它来创建它

new ArrayList<>(map.keySet())

Map.values() 返回值的集合。所以创建它使用

new ArrayList<>(map.values())

【讨论】:

    【解决方案3】:

    如果您的意思是将它们放入单独的变量中,那么 Java 语法将不允许您这样做。

    另一方面,如果你想把你的地图变成一个列表列表,你可以这样做:

    List<List<Integer>> allLists = new ArrayList<>(map.values());
    

    另外,如果您使用的是 Java 8,并且想要将列表列表扁平化为一个简单列表,您还可以查看以下内容:Turn a List of Lists into a List Using Lambdas

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2017-07-18
      • 2023-03-26
      • 2022-09-30
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      相关资源
      最近更新 更多