首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在运行时向对象数组添加多个数据

在运行时向对象数组添加多个数据
EN

Stack Overflow用户
提问于 2013-05-15 13:49:42
回答 3查看 952关注 0票数 1

如何在java中设置对象的二维数组的值。

下面是我的for循环:

代码语言:javascript
复制
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.的时候犯了错

请帮我解决这个问题

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-15 13:53:37

不能将元素添加到数组中-只能在数组中设置元素。

我建议你使用List<Object[]>

代码语言:javascript
复制
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[]中。强制转换的唯一好处是,如果对象是意外类型,则会导致异常。)

如果你真的想要,你仍然可以使用一个数组,但是你需要一开始就创建一个大小合适的数组,然后保持“当前索引”。无论如何,使用数组通常比使用列表更难。

如果你真的需要一个数组,你可以从列表中创建一个:

代码语言:javascript
复制
Object[][] array = hexgenSecurityInferenceData.toArray(new Object[0][]);

这种方法分两个阶段完成,比直接预先填充数组要简单。

实际上,我建议做两个进一步的改变:

  • 不要只使用Object[] ...创建一个类型来封装此数据。使用您当前的方法,您甚至在Object[]中获得了一个嵌套的Object[] ...任何读取这些数据的代码都将是可怕的。
  • 使用entrySet()而不是keySet(),这样你就不需要通过key

来获取值了

票数 4
EN

Stack Overflow用户

发布于 2013-05-15 13:54:29

你有一个对象矩阵Object[][],所以如果你想填充这个二维数组,你必须这样做:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2013-05-15 14:07:42

使用List是解决这个问题的最好方法。但是,您仍然可以通过初始化数组来使用object[]

代码语言:javascript
复制
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++;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16557765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档