Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Arraylist<;对象[]>;反对[][]_Java_Arrays_Object_Arraylist - Fatal编程技术网

Java Arraylist<;对象[]>;反对[][]

Java Arraylist<;对象[]>;反对[][],java,arrays,object,arraylist,Java,Arrays,Object,Arraylist,我正在尝试从对象[]创建对象[]的ArrayList执行一些更改,然后使用所做的更改获取一个新对象[] 但是我得到了这个编译错误: 错误:不兼容的类型:无法将对象[]转换为对象[][] 执行此操作时: protected Object[][] data; fillData(); ArrayList dlist= new ArrayList<Object[]>( Arrays.asList(data) ); //NO COMPILE ERROR Object[] example=new

我正在尝试从对象[]创建对象[]的ArrayList执行一些更改,然后使用所做的更改获取一个新对象[]

但是我得到了这个编译错误:

错误:不兼容的类型:无法将对象[]转换为对象[][]

执行此操作时:

protected Object[][] data;
fillData();
ArrayList dlist= new ArrayList<Object[]>( Arrays.asList(data) ); //NO COMPILE ERROR
Object[] example=new Object[2]; //just to use in toArray()

String [] args= {"new data 1","new data 2"};//yeah just a typo thanks Oscar
dlist.add( args ); //Sending String instead of Object is legal thanks Oscar.

data= dlist.toArray( example ); //COMPILER ERROR incompatible...
受保护对象[][]数据;
fillData();
ArrayList dlist=新的ArrayList(Arrays.asList(data))//没有编译错误
Object[]示例=新对象[2]//仅用于toArray()
字符串[]args={“新数据1”,“新数据2”}//是的只是一个打字错误谢谢奥斯卡
数据列表添加(args)//发送字符串而不是对象是合法的。
数据=dlist.toArray(示例)//编译器错误不兼容。。。
我使用了错误的语句,没有编译器错误:
ArrayList dlist=新的ArrayList(Arrays.asList(data))
因为输出是Object[],而不是我想要的Object[]
谢谢你的帮助。

这样做:

List<Object[]> dlist = new ArrayList<Object[]>();
for(Object[] i: data) {
    dlist.add(i);
}
List dlist=new ArrayList();
对于(对象[]i:数据){
D列表.添加(i);
}

我尝试了这段代码,效果如下:

Object[][] data = { { "hello", "world" }, { "bye", "world" } };
//convert Object[][] to List<Object[]>
List<Object[]> dlist = new ArrayList<>(Arrays.asList(data) );
for (Object[] o : dlist) {
    System.out.println(Arrays.deepToString(o));
}
//convert List<Object[]> to Object[][]
Object[][] data2 = dlist.toArray(new Object[0][]);
System.out.println(Arrays.deepToString(data2));
Object[][]数据={{“你好”,“世界”},{“再见”,“世界”};
//将对象[]转换为列表
List-dlist=newarraylist(Arrays.asList(data));
对于(对象[]o:dlist){
System.out.println(Arrays.deepToString(o));
}
//将列表转换为对象[][]
对象[][]数据2=dlist.toArray(新对象[0][]);
System.out.println(Arrays.deepToString(data2));

此外,Java语言不适用于命令,除非您引用命令行来编译文件,但这超出了Java编程语言的范围。

这是OP试图避免的。看不出他在问题中指定了他试图避免的地方。还有,为什么?使用
Arrays#asList
就足够了。看不出
ArrayList dlist=new ArrayList(Arrays.asList(objects))未编译。。。它在我的机器上工作。这就是问题所在,这是一个不清楚的问题,我们不知道OP的确切问题。
List dlist=new ArrayList(Arrays.asList(data))为我编译。你到底有什么问题?可能您没有添加必要的导入或其他内容。
dlist.add()
之所以有效,是因为您声明了
ArrayList dlist
,它是原始的,类似于declare
ArrayList dlist
,这意味着您可以在那里存储任何内容。您说我使用了错误的命令是什么意思,谢谢您的帮助?您的问题解决了吗?
Object[]data2=dlist.toArray(新对象[dlist.size()][])也可以避免创建不必要的垃圾。
对象[][]data=dlist.toArray(新对象[dlist.size()][])就足够了吗?我不想保留数据“数据”。只是新的。和Luiggi
Object[]data2=dlist.toArray(新对象[0][])是否应该将其放入迭代器中,并用计数器替换0?或者您的声明正在更新整个二维数组?@lrn2java我正在替换整个
对象[]
2d数组。@msandiford我将这交给JVM。好的,谢谢
estimado
,我将继续我的小项目,然后读取数组和列表,deepToString似乎起到了作用。