代码之家  ›  专栏  ›  技术社区  ›  one-hand-octopus

如何从数组转换的ArrayList中删除元素?[重复]

  •  1
  • one-hand-octopus  · 技术社区  · 3 年前

    我有一个这样的数组:

    int [] a = {1, 2, 3};
    

    现在我想修改它,所以我将其转换为ArrayList:

    ArrayList b = new ArrayList<>(Arrays.asList(a));
    

    但是,我无法从中删除元素。我试过:

    b.get(0).remove(2);
    

    这不起作用,b似乎包含一个对象而不是整数?如何从b中删除一个元素?

    2 回复  |  直到 3 年前
        1
  •  3
  •   Pshemo    3 年前

    你不能使用 Arrays.asList() 一系列 原始类型 喜欢 int[] 作为参数,因为这将创建一个包含数组本身的列表 List<int[]> 而不是 List<Integer> 。这只适用于对象数组( Integer[] 例如)。
    更多信息: Arrays.asList() not working as it should?

    要以这种方式创建列表,可以使用streams:

    List<Integer> b = Arrays.stream(a).boxed().collect(Collectors.toList());
    

    (请注意,不能将泛型与原语一起用作类型)。 b中的结果可以修改。

    然后:你可以打电话 b.get(0) 要检索列表的第一个元素,它将返回一个数字,而不是列表。

    或者你打电话 b.remove(2) 删除列表中的第三个元素。它将返回移除的元素或抛出 IndexOutOfBoundsException .

        2
  •  0
  •   nikosidij    3 年前

    这很管用

        int[] a = {1, 2, 3};
        List<Integer> list2 = new ArrayList<Integer>();
           for(Integer t:a) {
              list2.add(t);
           }
    

    遍历数组并添加到列表中。