我正在尝试使用以下方式将类型字符串的Arrayylist转换为2d数组,String [] []
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("report1");
arrayList.add("report2");
arrayList.add("report3");
String[][] array = new String[arrayList.size()][];
for (int i = 0; i < arrayList.size(); i++) {
ArrayList<String> row = arrayList.get(i);
array[i] = row.toArray(new String[row.size()]);
}
在ArrayList<String> row = arrayList.get(i);
需要建议来解决这个问题,还是有其他方法可以实现相同的目标
答案 0 :(得分:0)
您只有一个ArrayList,而不是ArrayList&gt;。前者是一个动态的字符串数组,您可以从中获取String[]
。
只需致电
String[] myArray=arrayList.toArray(new String[0]);
无需缩小尺寸,因为它会自动获得尺寸。
如果您想获得char[][]
,请执行:
char[][] chars=new char[arrayList.size()][0]
int i=0;
for(String s:arrayList){
chars[i]=s.toCharArray();
i++;
}
请注意,我们在循环中递增计数器。增强的for循环不会为我们提供一个计数器。
答案 1 :(得分:0)
arrayList.get(i)它将返回String而不是string的arraylist。所以编译器会给出转换错误。
如果您想要实现您的功能,可以按照以下方式进行操作
String[][] array = new String[arrayList.size()][];
for (int i = 0; i < arrayList.size(); i++) {
ArrayList<String> row = new ArrayList<String>();
row.add(arrayList.get(i));
array[i] = row.toArray(new String[row.size()]);
}
答案 2 :(得分:0)
// TODO Auto-generated method stub
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("report1");
arrayList.add("report2");
arrayList.add("report3");
arrayList.add("report4");
arrayList.add("report5");
arrayList.add("report6");
arrayList.add("report7");
arrayList.add("report8");
arrayList.add("report9");
int rowSize = 3;
String[][] array = new String[rowSize][];
int rowIndex=0;
ArrayList<String> tempList = new ArrayList<String>();
for (int i = 0; i < arrayList.size(); i++) {
tempList.add(arrayList.get(i));
if(i>0 && ((i+1)%(rowSize))==0){
array[rowIndex++] = tempList.toArray(new String[tempList.size()]);
tempList = new ArrayList<String>();
}
}
// prints the result array for varification
for(int i=0;i<array.length;i++){
System.out.println("\n\nRow : "+i+"\n");
String[] innerArray = array[i];
for(int j=0;j<innerArray.length;j++){
System.out.print(innerArray[j]+" ");
}
}
根据需要更改rowSise变量值。