大家好,又见面了,我是你们的朋友全栈君。
数组集合转换
数组变字符串
int[] arr = {4,1,8,5,3,5};
System.out.println(Arrays.toString(arr));//[4,1,8,5,3,5]
1、集合转数组
Object[] toArrays()
E[] toArrays(E[] e);
有时候 需要让集合围成数组,因为有时需要限定对集合中的元素操作,不需要对该元素进行增删。
这里我们 可以 使用的是Collection接口中的toArray方法。
在使用toArray方法时,可以传入一个指定类型的数组。
那么toArray会返回该类型的数组并存储了集合中的元素。
给toArray方法传递的数组长度该怎么定义呢?
如果传入的数组长度小于集合的长度,那么该toArray方法内部会建立一个新的该类型的数组,并长度和集合一致,来存储集合的元素。
如果传入的数组长度大于集合的长度,那么就使用传入的数组存储集合的元素,没有存储数据的位置为null。
所以传入数组时,该数组长度最好定义成集合的的长度。这就是刚刚好的数组。
例: Collection<String> c2 = new ArrayList<String>();
c2.add("c++");
c2.add("python");
c2.add("php");
c2.add("c#");
System.out.println(c2);
//想使用数组元素是必须强制转换 相对麻烦
Object[] obj = c2.toArray();
System.out.println(((String)obj[1]).length());
//集合转数组
/*为了避免强制性转换,调用重载方法,传一个元素类型的数组即可*/
String[] arr = c2.toArray(new String[0]);
System.out.println(arr);//[Ljava.lang.String;@15db9742
System.out.println(arr[1]);//python
System.out.println(Arrays.toString(arr));//[c++, python, php, c#]
System.out.println(arr[1].length());//6
2、数组转集合
List Arrays.asList(数组参数);
(1)数组存储基本数据类型,则会将该数组作为集合元素存在
int[] arr = {4,1,8,5,3,5};
List<int[]>list = Arrays.asList(arr);
System.out.println(list);//输出地址
(2)数组存储引用数据类型,则变成集合时,这些元素作为集合的元素存在
Integer[] arr = {3,1,5};
List<Integer> list = Arrays.asLiat(arr);
System.out.println(list);//输出[3,1,5]
PS:数组转成的集合,不可进行增删操作(运行异常),可以替换(数组变量会有影响)
若想增删,将元素存入新集合
String[] arr1 = {"1","10","a","abc"};
//将数组转集合
List<String>list = Arrays.asList(arr1);
System.out.println(list);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191712.html原文链接:https://javaforall.cn