【问题标题】:Converting a Map to a List将地图转换为列表
【发布时间】:2011-11-01 02:30:54
【问题描述】:

有谁知道如何将地图转换为列表

我在这里找到了类似的东西:

List<Value> list = new ArrayList<Value>(map.values());

但这只会将 Map 的值存储到列表中

我要做的是:将键和值复制到列表中

那么,你知道如何实现吗?

【问题讨论】:

  • 地图和列表是不同的数据结构,您希望如何将地图键和值组合到列表中?
  • 您能否详细说明“将键和值复制到列表中”的含义?
  • 为什么要这样做?它们是不同的数据结构,用于不同的目的。
  • 我有一个 Map&lt;String, String&gt; 和一个 List&lt;String&gt; 所以我想像帖子中显示的示例一样,但是通过复制两者(键和值)

标签: java list collections map arraylist


【解决方案1】:

这将为您提供地图条目列表:

List<Map.Entry<Key, Value>> list = 
    new ArrayList<Map.Entry<Key, Value>>(map.entrySet());

仅供参考,条目具有 getKey()getValue() 方法。

【讨论】:

    【解决方案2】:

    您可以做的一种方法是创建一个添加所有键的列表,例如:

    List list = new ArrayList(map.keySet());
    

    然后添加所有值,例如:

     list.addAll(map.values);
    

    然后可能您必须使用以下索引进行访问: 如果地图大小为 10 ,则您知道列表中有 20 个元素。 因此,您必须编写一个逻辑来访问列表中的键值,并正确计算索引,例如: size/2 之类的。 我不确定这是否有助于满足您的要求。

    【讨论】:

      【解决方案3】:

      @Bohemian 和@dacwe 都是对的。我还要说:在大多数情况下,您不必创建自己的列表。只需使用map.entrySet()。它返回 Set,但 Set 只是一个允许迭代其元素的集合。在 95% 的情况下,迭代就足够了。

      【讨论】:

        【解决方案4】:

        尝试存储mapMap.Entrys:

        new ArrayList<Entry<Key, Value>>(map.entrySet());
        

        示例:

        public static void main(String[] args) {
        
            Map<String, Integer> map = new HashMap<String, Integer>();
        
            map.put("Hello", 0);
            map.put("World!", 1);
        
            ArrayList<Entry<String, Integer>> list =
                new ArrayList<Entry<String, Integer>>(map.entrySet());
        
            System.out.println(list.get(0).getKey() + " -> " + list.get(0).getValue());
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-06
          • 1970-01-01
          • 2015-07-10
          • 1970-01-01
          • 2022-06-10
          • 2022-01-01
          相关资源
          最近更新 更多