Java中数组转集合最常用Arrays.asList(),但返回固定大小列表,不可增删;需可变集合时应包装为ArrayList或HashSet,基本类型数组需先装箱;集合转数组需注意类型匹配。
Java中将数组转换为集合,最常用且简单的方式是使用 Arrays.asList() 方法,但它返回的是固定大小的列表,不能直接增删元素;若需真正可变的集合(如 ArrayList 或 HashSet),还需进一步包装。
该方法适用于对象类型数组(如 String[]、Integer[]),不支持基本类型数组(如 int[])。
Arrays.asList(arr) 返回的是 Arrays 内部的静态 List 实现,底层仍引用原数组,修改列表会反映到数组上add()、remove(
) 等改变结构的操作,调用会抛出 UnsupportedOperationException
如果需要后续添加或删除元素,应将 Arrays.asList() 的结果传入 new ArrayList() 构造器。
ArrayList,与原数组无关联list 的增删不会影响原数组,反之亦然若需去重或按集合接口操作,可借助构造器或 Stream 流式处理:
HashSet:Setint[])必须先转为包装类型流:IntStream.of(intArr).boxed().collect(Collectors.toList());
集合转数组有两类典型场景:已知类型、或泛型擦除后需指定运行时类型。
collection.toArray(new Type[0]),推荐传入空数组(如 new String[0]),避免类型检查问题toArray() 获取,需手动遍历或用 Stream:int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
toArray() 无参版本返回 Object[],不能直接强转为具体类型数组