twelvet

当前位置:首页 > 技术分享 > Java

Java

集合与数组的区别以及相互的转换

2020-04-22 17:08:43 TwelveT 443
特点1.长度数组:长度是固定不能改变的集合:长度可动态扩展2.储存内容数组:可以是基本类型,也可以是引用类型集合:只能是引用类型3.储存的元素内容数组:同时只能储存同一种类型集合:可以储存不同类型的对象它们的互相转换1.数组转集合// 当传入基本数据类型数组时则会将这个数组对象当成一个引用类型对象存进List集合Lis...

特点

1.长度

数组:长度是固定不能改变的
集合: 长度可动态扩展

2.储存内容

数组:可以是基本类型,也可以是引用类型
集合:只能是引用类型

3.储存的元素内容

数组:同时只能储存同一种类型
集合:可以储存不同类型的对象

它们的互相转换

1.数组转集合

Integer[] twelvet = {1, 2};
List<Integer> list = Arrays.asList(twelvet);
System.out.println(list.size());
for(Integer item : list){
    System.out.println(item);
}
// 当我们尝试进行添加新元素时,是否可以呢?
list.add("asd");
// 答案是不行的,会抛一个UnsupportedOperationException异常出来,同理remove方法也是不可以使用的所以不可取!!!
// 那么如何解决呢?
// 我们可以尝试使用addAll方法进行一个突破口,例如新建立一个数组,将这个数组全部添加给新数组后,再添加新元素
// 当然,我们还可以更简,直接使用ArrayList的有参构方法
#########################################################################
int[] twelvet = {1, 2};
// 当传入基本数据类型数组时则会将这个数组对象当成一个引用类型对象存进List集合
List<int[]> list = Arrays.asList(twelvet);
// 因此此处取出来的是地址值 ,并不是1,我们需要这样写才能取出其值
System.out.println(list.get(0)[0]);
// 至此也验证了我们的集合是不能储存基本类型的结论,如果必须储存基本类型的数组的话,请将其转换为包装类型再转换
// 下面是用Lambda表达式将其处理并转换为集合
List<Integer> list = Arrays.stream( twelvet ).boxed().collect(Collectors.toList());

2.集合转数组

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
// 建立数组,使用list长度
Integer[] integers = new Integer[list.size()];
// 此处不建议直接使用无参构造函数,因为返回的是Object[]的一个数组
list.toArray(integers);
for (Integer item : integers) {
    System.out.println(item);
}

 

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

标签:集合与数组  

文章评论