如何在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.的时候犯了错
请帮我解决这个问题
发布于 2013-05-15 13:53:37
不能将元素添加到数组中-只能在数组中设置元素。
我建议你使用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(),这样你就不需要通过key来获取值了
发布于 2013-05-15 13:54:29
你有一个对象矩阵Object[][],所以如果你想填充这个二维数组,你必须这样做:
Object[][] hexgenSecurityInferenceData=new Object[10][10];
for(int i=0; i<10;i++){
for(int j=0; j<10;j++){
hexgenSecurityInferenceData[i][j] = new Object();
}
}Jon指出,和一样,最好有自己的实现/封装,而不是使用Object
发布于 2013-05-15 14:07:42
使用List是解决这个问题的最好方法。但是,您仍然可以通过初始化数组来使用object[]。
Object[][] hexgenSecurityInferenceData = new Object[knowGoodMap.keySet().size()][];
int i = 0;
for (String methodName : knowGoodMap.keySet())
{
hexgenSecurityInferenceData[i][0] = new Object[][]
{
{(KnownGoodInfoRO) knowGoodMap.get(methodName),
new Object[]{(MethodPropertiesRO) methodPropertiesMap.get(methodName), (List) methodParametersMap.get(methodName)}
}
};
i++;
}https://stackoverflow.com/questions/16557765
复制相似问题