如何在Java中为对象的二维数组设置值。
以下是我的for循环:
Object[][] hexgenSecurityInferenceData = null;
for (String methodName: knowGoodMap.keySet()) {
hexgenSecurityInferenceData = new Object[][] {
{
(KnownGoodInfoRO) knowGoodMap.get(methodName), new Object[] {
(MethodPropertiesRO) methodPropertiesMap.get(methodName), (List) methodParametersMap.get(methodName)
}
},
};
}
这仅打印一行数据。我确定
adding values to Array of Object but really don't know how to fix.
时我会弄错请帮我解决这个问题
最佳答案
您不能将元素添加到数组-您只能在数组中设置元素。
我建议您改用List<Object[]>
:
List<Object[]> hexgenSecurityInferenceData = new ArrayList<Object[]>();
for (String methodName:knowGoodMap.keySet()) {
hexgenSecurityInferenceData.add(new Object[] {
knowGoodMap.get(methodName),
new Object[] {
methodPropertiesMap.get(methodName),
methodParametersMap.get(methodName)
}
});
}
(我已经删除了强制类型转换,因为它们毫无意义...无论如何,您都将值存储在
Object[]
中。强制类型转换的唯一好处是,如果对象属于意外类型,则会导致异常。)如果确实需要,您仍然可以使用数组,但是您需要以正确的大小开始创建它,然后保留“当前索引”。这样一来,使用数组通常要比列表难。
如果确实需要一个数组,则可以从列表中创建一个:
Object[][] array = hexgenSecurityInferenceData.toArray(new Object[0][]);
与直接直接填充数组相比,以这种方式分两个阶段进行操作会更简单。
实际上,我建议进一步进行两项更改:
不要只是使用
Object[]
来创建一个封装数据的类型。使用当前的方法,您甚至在Object[]
内都有嵌套的Object[]
...读取该数据的任何代码都将是可怕的。使用
entrySet()
代替keySet()
,则不需要通过键获取值