Collection和数组之间的转换

本文介绍了如何在Java中实现Collection与数组之间的相互转换。通过使用List的toArray()方法将集合转换为数组,并利用Arrays.asList()及CollectionUtils.addAll()方法完成数组到集合的转换。

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

1 collection转成数组

    Object[ ]  toArray()函数
		List<Integer> numbers=new ArrayList<Integer>();
		numbers.add(1);
		numbers.add(2);
		numbers.add(3);
		//返回的是一个Object数组
		Object[] numArray=numbers.toArray();
		System.out.println(Arrays.toString(numArray));

2 数组转换成collection

List<T> Arrays.asList(T... a)
		List<Integer> numbers=new ArrayList<Integer>();
		//必须是包装器类型,因为使用了泛型
		Integer[] ages={11,23,25};
		numbers=Arrays.asList(ages);
		System.out.println(numbers);

CollectionUtils 的public static void addAll(Collection collection, Object[] elements)方法
		List<Integer> numbers=new ArrayList<Integer>();
		Integer[] from={1,2,3};
		CollectionUtils.addAll(numbers,from);
		System.out.println(numbers);




### 集合与数组互相转换的方法 在 Java 中,集合数组之间转换是非常常见的操作。以下将详细介绍如何实现集合与数组之间的互相转换,并结合引用内容进行说明。 #### 集合数组 集合可以通过 `toArray()` 方法转换数组。具体实现如下: ```java Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); // 调用集合的 toArray() 方法 Object[] objects = coll.toArray(); // 遍历数组 for (int i = 0; i < objects.length; i++) { System.out.println(objects[i]); } ``` 上述代码展示了如何将一个 `Collection` 类的集合转换数组[^1]。需要注意的是,`toArray()` 方法返回的是一个 `Object[]` 类数组。如果需要转换为特定类数组,可以使用带参数的 `toArray(T[] a)` 方法,例如: ```java String[] stringArray = new String[coll.size()]; coll.toArray(stringArray); ``` 此外,还可以通过循环手动将集合中的元素赋值给数组[^2]。 --- #### 数组集合 数组可以通过 `Arrays.asList()` 方法直接转换为集合。示例如下: ```java String[] array = new String[]{"aa", "bb", "cc"}; List<String> list = Arrays.asList(array); System.out.println(list); ``` 需要注意的是,`Arrays.asList()` 返回的集合是一个“假集合”,即它与原始数组共享底层数据结构。因此,对集合的操作可能会影响原始数组,反之亦然[^3]。 为了生成一个真正的集合,可以在“假集合”的基础上创建一个新的集合对象,例如: ```java Object[] array = listToArray1(); List<Object> asList = Arrays.asList(array); // 假集合 ArrayList<Object> list = new ArrayList<>(asList); // 真集合 ``` 通过这种方式,可以避免原始数组集合之间的相互影响[^3]。 --- #### 使用 `Set` 的特殊场景 如果需要将数组转换为 `Set` 类的集合,可以结合 `HashSet` `Arrays.asList()` 实现。示例如下: ```java String[] values = {"a", "b", "c", "e", "d"}; Set<String> sets = new HashSet<>(Arrays.asList(values)); Iterator<String> iterator = sets.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } ``` 上述代码展示了如何将数组转换为去重的集合(`Set`)[^4]。同样地,`Set` 类的集合也可以通过 `toArray()` 方法转换数组: ```java String[] values_bak = sets.toArray(new String[sets.size()]); for (String s : values_bak) { System.out.print(s + " "); } ``` --- ### 注意事项 1. **集合与数组的区别**:集合是动态数据结构,而数组是固定大小的数据结构。因此,在选择使用哪种数据结构时,需要根据实际需求决定。 2. **假集合问题**:`Arrays.asList()` 返回的集合是“假集合”,不能随意添加或删除元素。如果需要一个可变集合,应基于其创建新的集合对象[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值