当前位置: 首页 > 面试题库 >

数组的Arrays.asList()

戈华茂
2023-03-14
问题内容

这种转换有什么问题?

public int getTheNumber(int[] factors) {
    ArrayList<Integer> f = new ArrayList(Arrays.asList(factors));  
    Collections.sort(f);
    return f.get(0)*f.get(f.size()-1);
}

在从array读取CreateArrayList中找到的解决方案后,我进行了此操作。第二行(排序)getTheNumber(...)导致以下异常:

线程“主”中的异常java.lang.ClassCastException:[无法强制转换为java.lang.Comparable]

怎么了 我确实意识到可以使用进行排序Arrays.sort(),但我对此感到很好奇。


问题答案:

让我们考虑以下简化示例:

public class Example {
    public static void main(String[] args) {
        int[] factors = {1, 2, 3};
        ArrayList<Integer> f = new ArrayList(Arrays.asList(factors));
        System.out.println(f);
    }
}

在println行中,这会打印类似“ [[I @ 190d11]””的字样,这意味着您实际上已经构建了一个包含int 数组 的ArrayList 。

您的IDE和编译器应警告该代码中未经检查的分配。您应该始终使用new ArrayList<Integer>()newArrayList<>()代替new ArrayList()。如果您使用过它,则会由于尝试传递List<int[]>给构造函数而出现编译错误。

int[]至没有自动装箱Integer[],总之,自动装箱只是编译器中的语法糖,因此在这种情况下,您需要手动进行数组复制:

public static int getTheNumber(int[] factors) {
    List<Integer> f = new ArrayList<Integer>();
    for (int factor : factors) {
        f.add(factor); // after autoboxing the same as: f.add(Integer.valueOf(factor));
    }
    Collections.sort(f);
    return f.get(0) * f.get(f.size() - 1);
}


 类似资料:
  • 问题内容: 我在PostgreSQL类型上使用%%运算符,该运算符将hstore(有效键值类型)转换为元素交替为{{key,value},{key value}}的数组。 当我想返回这些平坦的hstore的数组时,出现此错误:由于PostgreSQL缺乏对数组数组的支持。 从好奇心的角度来看,有人知道为什么不支持这些吗?更重要的是,这种情况是否可以解决? 目前,我将结果串联成一个字符串(用逗号分隔

  • 问题内容: 我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它: 所需结果: 实际结果: 可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。 问题答案: 永远不要在循环中追加数组:与基本的Python相比,这是NumPy非常不擅长的一项操作。这是因为您要对每个数据进行完整复制,这将花费您二次时间。 相反,只需将您的数组附加到Python列表中,并在最后进行转

  • 问题内容: 我想解析一些json数据。数据如下所示: {“ id”:“ someId”,“ key_1”:“ value_1”,“ key_2”:“ value_2”,“ key_3”:“ value_3”,“点数”:[[1487100466412,“ 50.032178”,“ 8.526018”,300 ,0.0,26,0],[1487100471563,“ 50.030869”,“ 8.525

  • 我有以下代码,运行时会出现错误:TypeError:无法读取未定义的属性“split” 您可以在这里运行它。 我有数组,我想将它转换为数组的数组,首先在处拆分以分离数组,然后在处拆分以创建数组中的项。因此此列表将如下所示: [[data1,data2,data3],[data4,data5,data6],[data7,data8,data9]] 执行类似的操作,但当我尝试使用访问它时,它只给我第一

  • 我有一个JavaScript数组,如: 如何将单独的内部数组合并为一个:

  • 我想创建一个数组,使其包含一些标识名,并且对于这些名称中的每一个,都有另一个关联的数组。我的做法是,, 执行此操作后,我得到如下结果:, 下次调用此函数时,我需要检查1-1是否存在,如果存在,我需要获取与1-1相关的列表。我该怎么做。。?如果1-1不在myArray中,我将调用其他函数。