0
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

4

3 回答 3

1

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

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

//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 的建议。

于 2013-09-26T13:24:24.350 回答
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);
}

遍历列表

for (Map.Entry<Integer,Integer> entry : openTimes)
{
     System.out.println(entry.getKey());
     System.out.println(entry.getValue());
}
于 2013-09-26T13:25:07.797 回答
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>直接使用,或提供您自己的匿名实现。

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

于 2013-09-26T13:25:28.637 回答