Java中数组和集合的相互转换

本文详细介绍Java中集合与数组之间的转换方法,包括如何将数组转换为集合,以及如何将集合转换为数组,并强调了在转换过程中泛型的重要性。

代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Demo4_AsList {

	public static void main(String[] args) {
		//demo1();
		//demo2();
		//demo3();
  	
	}

	private static void demo3() {
		//集合转数组,加泛型的
  		ArrayList<String> list = new ArrayList<>();
  		list.add("a");
  		list.add("b");
  		list.add("c");
  		list.add("d");
  		
  		String[] arr = list.toArray(new String[10]);		//当集合转换数组时,数组长度如果是小于等于集合的size时,转换后的数组长度等于集合的size,比如给的是0,输出是a,b,c,d	;不加泛型<String>的话,list.toArray会报错,要求强转至String或将String换为Object							
  															//如果数组的长度大于了size,分配的数组长度就和你指定的长度一样,不足则以null或0补足
  		for (String string : arr) {
  			System.out.println(string);
  		}
	}

	private static void demo2() {
		//int[] arr = {11,22,33,44,55};				//基本数据类型的数组转换成集合,会将整个数组当作一个对象转换,泛型是一个数组类型
		//List<int[]> asList = Arrays.asList(arr);	//运行结果是一个地址值
		//System.out.println(asList);				
		Integer[] arr = {11,22,33,44,55};			//将数组转换成集合,数组必须是引用数据类型
  		List<Integer> list = Arrays.asList(arr);
  		System.out.println(list);					//运行结果:[11,22,33,44,55]
	}

	private static void demo1() {
		//数组转集合
		String[] arr = {"a","b","c","d"};
		List<String> list = Arrays.asList(arr);
		System.out.println(list);
	}

}
Java编程里,数组集合都是用于存储管理一组数据的数据结构,但它们既有联系又有区别。 数组集合存在一定的关联,它们都可用于存储多个元素。并且在实际编程中,数组集合之间可以相互转换。例如,可以将数组的元素添加到集合中,也能把集合中的元素存储到数组里。 二者也存在明显的区别。数组的长度是固定的,一旦创建就无法改变其容量;而集合的长度是可变的,能根据需求动态扩展容量,还提供了更多成员方法以满足更多需求[^2]。 在使用场景上,数组适合处理元素数量固定且对性能要求较高的情况。例如,创建并初始化字符串数组`String[] names = {"Alice", "Bob", "Charlie"}`,其长度为3;创建一个长度为 5 的整数数组`int[] arr = new int[5]`,可通过索引添加获取元素,还能使用`arr.length`获取数组长度[^5]。集合则更适用于元素数量不确定,需要频繁进行插入、删除操作的场景。像List集合,存放的对象有序且可重复,关注索引,有一系列索引相关的方法,查询速度快,但插入删除数据时会伴随后面数据的移动,所以插入删除速度慢[^4]。 集合还有多种具体类型,Collection代表单列集合,包含ListSet接口。List接口按元素进入顺序排序,元素可重复,其实现类有ArrayList(数组实现,线程不安全)、LinkedList(链表实现,线程不安全)、Vector(数组实现,线程安全);Set接口元素不可重复,实现类有HashSet(数组实现)、TreeSet(二叉树实现,元素自动排序)。Map代表双列集合(键值对),实现类有HashMap(数组加链表实现,线程不安全)、Hashtable(线程安全)、ListedhashMap(key有序)、TreeMap(红黑树实现对所有key排序)[^3]。 ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayAndCollection { public static void main(String[] args) { // 数组集合 String[] names = {"Alice", "Bob", "Charlie"}; List<String> nameList = new ArrayList<>(Arrays.asList(names)); // 集合数组 List<Integer> numberList = new ArrayList<>(); numberList.add(1); numberList.add(2); numberList.add(3); Integer[] numberArray = numberList.toArray(new Integer[0]); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值