2-java集合-集合与数组转化

本文详细介绍了Java中集合如何转化成数组,数组如何转化为集合,并特别讨论了Arrays.asList()方法的使用限制及如何正确利用Java 8的Stream、Guava、Apache Commons Collections以及Java 9的List.of()等方法来创建可变集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java集合-集合与数组转化


一. 集合转化数组

核心方法:对象.toArray()

Object[] arr = list.toArray();
String[] strs = list.toArray(new String[0]);// 参数用于说明转为什么数组
// 细节,方法二中,如果参数数组可用,即长度足够存放集合的所有元素,则使用该数组
// 如果数组不可用,则自动创建一个与给定数组同类型的数组

二. 数组转化为集合

核心方法:Arrays.asList()

  • 如果指定的数组为基本类型数组,会将数组本身当作一个对象放入集合
  • 如果指定的数组是 类(对象), 会将数组中的每个独立对象存储在集合中
int[] arr = {...};
List<int[]> list = Arrays.asList(arr);
// list只有一个元素,那就是arr

Integer[] arr2 = {...};
List<Integer> list2 = Arrays.asList(arr2);
// list有多个元素,是arr2中每个元素

重点 使用 asList 转化的集合,其容量是固定的,也即转化后的集合,大小固定,不能增删,可以更改。

list2.add(789)// 会报错
list2.set(0,789)// 不会报错

三. 如何正确使用asList

二中我们知道,使用 asList 获得的容器是不能增删的,是不便使用的,那么需要想办法改成能正常使用的

1. 手动实现工具类

//JDK1.5+
static <T> List<T> arrayToList(final T[] array) {
  final List<T> l = new ArrayList<T>(array.length);

  for (final T s : array) {
    l.add(s);
  }
  return l;
}


Integer [] myArray = { 1, 2, 3 };
System.out.println(arrayToList(myArray).getClass());//class java.util.ArrayList

2. new一个容器(最简便的方法)

List list = new ArrayList<>(Arrays.asList("a", "b", "c"))

3. 使用 Java8 的 Stream (推荐)

Integer [] myArray = { 1, 2, 3 };
List myList = Arrays.stream(myArray).collect(Collectors.toList());
//基本类型也可以实现转换(依赖boxed的装箱操作)
int [] myArray2 = { 1, 2, 3 };
List myList = Arrays.stream(myArray2).boxed().collect(Collectors.toList());

4. 使用 Guava

对于不可变集合,你可以使用ImmutableList类及其of()与copyOf()工厂方法:(参数不能为空)

List<String> il = ImmutableList.of("string", "elements");  // from varargs
List<String> il = ImmutableList.copyOf(aStringArray);      // from array

对于可变集合,你可以使用Lists类及其newArrayList()工厂方法:

List<String> l1 = Lists.newArrayList(anotherListOrCollection);    // from collection
List<String> l2 = Lists.newArrayList(aStringArray);               // from array
List<String> l3 = Lists.newArrayList("or", "string", "elements"); // from varargs

5. 使用 Apache Commons Collections

List<String> list = new ArrayList<String>();
CollectionUtils.addAll(list, str);

5. 使用 Java9 的 List.of()方法

Integer[] array = {1, 2, 3};
List<Integer> list = List.of(array);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值