将元素添加到List <map.entry <integer,integer>&gt; </map.entry <integer,integer>

时间:2013-09-26 13:19:48

标签: java list dictionary arraylist

List<Map.Entry<Integer,Integer>> openTimes = new ArrayList<Map.Entry<Integer,Integer>>();

for (int i=0; i<_elem.size(); i++)
{
  openTimes.add(i,_elem.get(i));
}

如何正确地将元素添加到列表openTimes

3 个答案:

答案 0 :(得分:1)

您所做的事情是错误的,您将列表声明为List<Map.Entry<Integer,Integer>>,因此当您执行此行代码openTimes.add(i,_elem.get(i));时,您插入的不是Map。我想你正在寻找类似的东西。你能做的是

我不知道你想在这做什么,但你可以使用这个

//We get the first Map
Map<Integer,Integer> yourMap = _elem.get(0);

for (int i=0; i<_elem.size(); i++)
{
  yourMap.put(i,_elem.get(i))
}

或者您也可以使用dasblinkenlight建议的内容。

答案 1 :(得分:1)

for (int i=0; i<_elem.size(); i++)
{
   Map.Entry<Integer,Integer> entry =
                    new AbstractMap.SimpleEntry<Integer, Integer>(i,_elem.get(i));
  openTimes.add(entry);
}

迭代List

for (Map.Entry<Integer,Integer> entry : openTimes)
{
     System.out.println(entry.getKey());
     System.out.println(entry.getValue());
}

答案 2 :(得分:1)

如果您必须拥有地图条目,则需要Map从中获取这些条目。一种方法如下:

Map<Integer,Integer> tmp = new HashMap<Integer,Integer>();
for (int i=0; i<_elem.size(); i++) {
    tmp.put(i, _elem.get(i));
}
List<Map.Entry<Integer,Integer>> openTimes =
    new ArrayList<Map.Entry<Integer,Integer>>(tmp.entrySet());

您也可以直接使用AbstractMap.SimpleEntry<K,V>,或者提供您自己的匿名实施。

更好的解决方案是定义自己的类来表示键值对。