Java 在列表中,存储的映射值为对象类型
我有一张地图,地图的内容被添加到列表中。我发现的问题 调试是在列表中添加不应该发生的对象(而不是它们的值) 将数据添加到地图中的代码:Java 在列表中,存储的映射值为对象类型,java,list,map,Java,List,Map,我有一张地图,地图的内容被添加到列表中。我发现的问题 调试是在列表中添加不应该发生的对象(而不是它们的值) 将数据添加到地图中的代码: List<Pair> pairList = new ArrayList<Pair>(); Map<Long, Integer> result = new LinkedHashMap<Long, Integer>(); for (Object[] arr : list) { result.put((Lo
List<Pair> pairList = new ArrayList<Pair>();
Map<Long, Integer> result = new LinkedHashMap<Long, Integer>();
for (Object[] arr : list) {
result.put((Long) arr[0], (Integer) arr[1]);
}
List pairList=new ArrayList();
映射结果=新建LinkedHashMap();
对于(对象[]arr:list){
结果.put((长)arr[0],(整数)arr[1]);
}
将数据从地图传输到列表的代码:
for(Map.Entry<Long, Integer> entries : result.entrySet()){
pairList.add(new Pair(entries.getKey(), entries.getValue()));
}
for(Map.Entry条目:result.entrySet()){
添加(新对(entries.getKey(),entries.getValue());
}
现在的问题是,在检查列表时,它包含对象,而它应该包含值。上面的测试用例有什么问题?您的列表属于
Pair类型。创建一个新的对
对象并将其添加到列表中。当调试列表时,您确实会看到一个完整的对象列表。类型为对的对象
。如果您检查这些成对的对象,您将看到值。好的,让我们看看代码,我们可以:
List<Pair> pairList = new ArrayList<Pair>();
list
未在此代码位中定义,因此据我们所知,您正在迭代一些包含对象数组的随机列表,即list
类型为list
。这段代码中有一些可疑的地方,看起来好像你通过一张地图把东西从一个列表拖到另一个列表。我无法想象任何合理的情况,但让我们继续
for(Map.Entry<Long, Integer> entries : result.entrySet()){
pairList.add(new Pair(entries.getKey(), entries.getValue()));
}
for(Map.Entry条目:result.entrySet()){
添加(新对(entries.getKey(),entries.getValue());
}
在这里,您迭代映射中的条目,并将它们放入一个对
对象中,该对象依次放入我们的对列表
因此,您在列表中输入的实际上是Pair
s,而不是映射条目的值。如果需要输入值,那么只需输入值即可
除了现在的对
对象之外,它的使用方式与映射项
相同;因此,除非您想对对执行一些自定义魔术,否则您不需要自定义类来表示键值对
如果您坚持保留Pair
类,但希望能够通过打印列表或在IDEs调试器中检查列表来调试它们,那么您可能希望重写toString()对中的方法
类。for声明中的列表
应该是对列表
?您能在列表中列出您的值吗?输出呢?你指的是什么对象?pairList
当然将包含Pair
对象。如果您正在谈论传递给对构造函数的两个参数不正确,那么请验证第一个列表的内容实际上是您认为的内容。
for(Map.Entry<Long, Integer> entries : result.entrySet()){
pairList.add(new Pair(entries.getKey(), entries.getValue()));
}