java - How can I transform a List of List (multidimensional List) to an Array of Array(multidimensional Array)? -
i have written code, @ run time have error:
[ljava.lang.object; cannot cast [[ljava.lang.string; please me, thanks!!!
public java.util.list<string> concatall(java.util.list<java.util.list<string>> mergedlist) { java.lang.string [][] mergedarray = (string[][])mergedlist.toarray(); iterator<java.util.list<string>> itr = mergedlist.iterator(); java.util.list<string> list1 = itr.next(); java.lang.string [] firstarray = (string[])list1.toarray(); int totallength = firstarray.length; (string[] array : mergedarray) { totallength += array.length; } string[] result = arrays.copyof(firstarray, totallength); int offset = firstarray.length; (string[] array : mergedarray) { system.arraycopy(array, 0, result, offset, array.length); offset += array.length; } java.util.list<string> finallist = arrays.aslist(result); (string list : finallist) system.out.println(list); return finallist; }
there's no out-of-the-box method, it's straightforward hand:
// create outer dimension of array, same size total list string[][] mergedarray = new string[mergedlist.size()][]; // iterate on each nested list , convert them string[] // instances form inner dimension (int = 0; < mergedlist.size(); i++) { mergedarray[i] = mergedlist.get(i).toarray(new string[0]); } a more efficient version of loop body be
list<string> innerlist = mergedlist.get(i); string[] innerasarray = innerlist.toarray(new string[innerlist.size()]); mergedarray[i] = innerasarray; as avoids array resizing required in initial example (the new string[0] isn't large enough hold list elements). quite frankly, unless performance critical loop, i'd prefer first version find clearer see what's going on.
Comments
Post a Comment