【问题标题】:Incomparable object types --> Object to string? [duplicate]无法比较的对象类型 --> 对象到字符串? [复制]
【发布时间】:2018-03-18 02:33:06
【问题描述】:

我的方法应该返回一个 String [] 所以我使用了 toArray 方法。但是我收到关于对象无法转换为字符串的错误。我也将列表初始化为 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();
}

【问题讨论】:

  • 最好提供你写的函数的代码。
  • 我已经发布了代码!!

标签: java string object


【解决方案1】:

试试这个

 return c.toArray(new String[c.size()]);

这基本上初始化了数组的大小

【讨论】:

    【解决方案2】:

    ArrayList 中有两个 toArray 方法。来自文档

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

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2010-10-17
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多