我有的方法应该返回一个String [],所以我用toArray方法。但我得到关于对象无法转换为字符串的错误。我已经将列表初始化为String,但我无法弄清楚我得到的错误。我读到的每个地方,他们都说初始化为String,我已经做过了。我该怎么解决?
ArrayList<String> c = new ArrayList<String>(Arrays.asList(a));
.......(job done)
return c.toArray();
- 整个代码:
public static String[] anagrams(String [] a) {
ArrayList<String> b = new ArrayList<String>(Arrays.asList(a));
ArrayList<String> c = new ArrayList<String>(Arrays.asList(a));
int l=a.length;
int i,j;
for (i=0;i<l;i++) {
for (j=i+1;j<l;j++) {
if (check(b.get(i),b.get(j))){
if (c.contains(b.get(j)))
c.remove(j);
}
}
}
return c.toArray();
}
答案 0 :(得分:1)
试试这个
return c.toArray(new String[c.size()]);
这基本上初始化了数组的大小
答案 1 :(得分:1)
toArray
中有两种ArrayList
方法。来自 docs :
Object[] toArray()
Returns an array containing all of the elements in this list in proper sequence (from first to last element).
<T> T[] toArray(T[] a)
Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array.
现在你正在使用第一个版本,它返回一个Object
数组。由于您需要String
数组,而不是Object
数组,因此必须使用第二个版本:
return c.toArray(new String[0]);
需要数组参数,以便ArrayList
知道要返回的类型。如果提供空数组,ArrayList
将为所需类型分配新数组。但是,您也可以为列表中的所有元素提供足够大的数组,然后ArrayList
将使用该数组而不是初始化新数组:
return c.toArray(new String[c.size()]);