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
?
答案 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>
,或者提供您自己的匿名实施。
更好的解决方案是定义自己的类来表示键值对。