Java Arraylist<;对象[]>;反对[][]
我正在尝试从对象[]创建对象[]的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
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
,它是原始的,类似于declareArrayList dlist
,这意味着您可以在那里存储任何内容。您说我使用了错误的命令是什么意思,谢谢您的帮助?您的问题解决了吗?Object[]data2=dlist.toArray(新对象[dlist.size()][])代码>也可以避免创建不必要的垃圾。对象[][]data=dlist.toArray(新对象[dlist.size()][])代码>就足够了吗?我不想保留数据“数据”。只是新的。和LuiggiObject[]data2=dlist.toArray(新对象[0][])代码>是否应该将其放入迭代器中,并用计数器替换0?或者您的声明正在更新整个二维数组?@lrn2java我正在替换整个对象[]
2d数组。@msandiford我将这交给JVM。好的,谢谢estimado
,我将继续我的小项目,然后读取数组和列表,deepToString似乎起到了作用。