无与伦比的对象类型 - >对象到字符串?

时间:2018-03-18 02:33:06

标签: java string object

我有的方法应该返回一个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();
}

2 个答案:

答案 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()]);