2011-08-22 88 views
3

有没有谁知道如何将地图转换到一个列表转换一个映射到列表

我发现这里是这样的:

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

但是这是要存储的仅仅是价值该地图列表

我想要做的是:关键&的值复制到列表

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

+0

地图和列表是不同的数据结构,你想如何将地图键和值组合到列表中? – beny23

+0

您能否详细说明“将密钥和值复制到列表中”的含义? – aioobe

+0

我知道,但我必须这样做 –

回答

9

这会给你的地图项的列表:

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

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

3

尝试存储mapMap.Entry S:

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

@Bohemian和@dacwe都是对的。另外我会说:在大多数情况下,您不必创建自己的列表。只需使用map.entrySet()。它返回Set,但Set只是一个允许遍历其元素的Collection。在95%的案例中迭代已经足够。你可以做

3

的方法之一是将像所有的按键创建列表:

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

然后加入像所有的值:

list.addAll(map.values); 

然后可能你已经与索引访问例如: 如果地图大小为10,则知道列表中有20个元素。 所以你必须编写一个逻辑来访问列表中的键值,并正确计算索引,例如:size/2。 我不确定这是否有助于您的要求。