【问题标题】:How to convert an array to an ArrayList without warnings/errors?如何在没有警告/错误的情况下将数组转换为 ArrayList?
【发布时间】:2012-06-28 06:28:18
【问题描述】:

所以,我有一点问题。我正在尝试将整数数组(称为list)转换为ArrayList(称为arrList)。下面显示的代码可以正常工作:

java.util.ArrayList arrList = new java.util.ArrayList(Arrays.asList(list));

但是,编译时有一个警告:上面的行被报告为使用“未经检查或不安全的操作”。

不幸的是,我似乎无法处理这个警告。由于这是一项家庭作业,部分标准是没有警告。有什么方法可以将数组转换为 ArrayList 而不会出现警告/错误?

【问题讨论】:

  • 有什么理由不使用泛型?哦,如果你不调用 array 变量 list.

标签: java arrays arraylist compiler-warnings


【解决方案1】:

确保您使用的是正确的“数组”导入。默认情况下,我的 Eclipse 将尝试导入“edu.emory.mathcs.backport.java.util”。确保它只是标准的“java.util”版本,您应该执行以下操作:

    String[] arr = new String[]{"one", "two", "three"};
    List<String> list = Arrays.asList(arr);

【讨论】:

  • Wtf...谢谢。接受的答案是一个笑话顺便说一句,谁会这样做以避免这样的警告。
  • 我们如何阻止 Eclipse 默认选择这种不寻常的导入?
  • 这太不可思议了,这是我的问题,哈哈。
【解决方案2】:
Collections.addAll(targetList, sourceArray); 

尝试上述解决方案。它应该工作

【讨论】:

  • method addAll in class Collections cannot be applied to given types
【解决方案3】:

由于您的list 似乎是int 而不是Integer 的数组,因此您需要遍历它们。请尝试以下操作:

List<Integer> intList = new ArrayList<Integer>(list.length);
for (int i: list) {
  intList.add(i);
}

【讨论】:

  • 我建议将大小添加到ArrayList:new ArrayList&lt;Integer&gt;(list.length);
  • 这是一种避免警告的愚蠢方式
【解决方案4】:

如果您的答案不仅限于一行,那么最安全的方法是:

java.util.ArrayList<Integer> arrList = new java.util.ArrayList<Integer>();
for (int x : arrList) {
    arrList.add(x);
}

【讨论】:

    【解决方案5】:

    此警告通常在您构建原始类型的集合时发出。即您没有定义它将包含什么类型的对象。

    java.util.ArrayList arrList = new java.util.ArrayList(Arrays.asList(list));// issues warning as you made ArrayList of raw type.
    

    要克服它,只需在 ArrayList 声明中添加对象类型。

    java.util.ArrayList<Integer> arrList = new java.util.ArrayList(Arrays.asList(list));
    

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2021-04-12
      • 1970-01-01
      • 2013-11-10
      • 2022-08-17
      • 1970-01-01
      • 2021-11-22
      • 2022-12-15
      相关资源
      最近更新 更多