将地图转换为列表

时间:2011-08-22 11:58:10

标签: java list collections map arraylist

是否有人知道如何将地图转换为列表

我在这里发现了这样的事情:

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

但这只会将Map的值存储到List

我想要做的是:复制Key&amp;列表的价值

那么,你知道如何实现这个目标吗?

4 个答案:

答案 0 :(得分:9)

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

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

仅供参考,条目包含getKey()getValue()方法。

答案 1 :(得分:3)

尝试存储map的{​​{3}}:

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());
}

答案 2 :(得分:3)

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

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

然后添加所有值,如:

 list.addAll(map.values);

然后可能你必须使用索引来访问: 如果地图大小为10,则表示列表中有20个元素。 所以你必须写一个逻辑来从列表中访问键值,并正确计算索引,如:size / 2之类的东西。 我不确定这是否有助于你的要求。

答案 3 :(得分:2)

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