Java集合框架篇-52-Arrays工具类数组转集合方法和注意事项

      在学习数组的时候,我们介绍了一个Arrays工具类,当时没有学习集合的知识,现在来介绍这个工具类的一个把数组转换成集合的方法asList()。

1.字符串数组转化成集合

package arrays;

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

public class Demo1_ToList {

	public static void main(String[] args) {
		
		String[] arr = {"a","b","c","d"};
		//Arrays.toList()方法,直接把数组转成集合,返回一个集合对象
		List<String> list = Arrays.asList(arr);   	//数组转成集合对象
		System.out.println(list);
	}

}

运行输出:[a, b, c, d]

2.基本数据类型数组转换成集合

package arrays;

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

public class Demo1_ToList {

	public static void main(String[] args) {
		
		int[] arr = {11,22,33,44,55};
		//Arrays.toList()方法,直接把数组转成集合,返回一个集合对象
		List list = Arrays.asList(arr);   	//数组转成集合对象
		System.out.println(list);
	}

}
运行一下:[[I@15db9742]

      看到运行结果,是不是很奇怪,为什么不是输出[11,22,33,44,55].原因就是在转换之后,把[11,22,33,44,55]当做成一个对象给存储集合中,因为集合中只能存储引用数据类型,不能存储基本数据类型。那么如果要实现打印基本数据类型的效果呢,这个时候我们就需要使用基本数据类型的包装类,这样就变成一个引用数据类型,可以存储到集合中。

package arrays;

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

public class Demo1_ToList {

	public static void main(String[] args) {
		
		Integer[] arr = {11,22,33,44,55};
		//Arrays.toList()方法,直接把数组转成集合,返回一个集合对象
		List<Integer> list = Arrays.asList(arr);   	//数组转成集合对象
		System.out.println(list);
	}

}

运行输出:[11, 22, 33, 44, 55]

3.数组转集合之后注意点

       数组是不可以改变的,集合是可以对元素进行添加和操作。那么为什么还需要把数组转换成集合呢?数组转集合是为了借助集合的思想,来操作元素,但是不能进行添加和删除元素操作,其他集合的方法,数组转成集合是能用的,否则会报不支持操作的异常。

package arrays;

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

public class Demo1_ToList {

	public static void main(String[] args) {
		
		String[] arr = {"a","b","c"};
		//Arrays.toList()方法,直接把数组转成集合,返回一个集合对象
		List<String> list = Arrays.asList(arr);   	//数组转成集合对象
		System.out.println(list);
		list.add("f");
	}

}

上面的list.add("f")代码在编译没有报错,运行就报UnsupportedOperationException异常。

4.集合转数组toArray(T[] a)方法

      我们再来学习下集合转数组方法的第二个方法toArray(T[] A),t[]其实就是制定的泛型。

package arrays;

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

public class Demo1_ToList {

	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		//集合转数组
		String[] arr = list.toArray(new String[0]);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
		
	}

}

运行输出:a b c d

上面需要提一下下面这行代码的0的作用

String[] arr = list.toArray(new String[0]);

如果不是0,改成10会打印什么结果?

a b c d null null null null null null
       通过这个可以看出这个0或者10表示转换后数组的长度。有这样一个规律:当集合转换数组时,如果数组长度小于等于集合的size时候,转换后的数组长度等于集合的size。如果指定转换后长度大于集合的size,分配的数组长度就和指定的长度一样。例如上面指定长度是10,大于原集合size(4),所以转换后数组长度是10,后面6个元素为null。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值