java - 关于将Array转换成ArrayList的警告
问题描述
package com.demo.array;import java.util.ArrayList;import java.util.Arrays;/** * 关于数组的演示 * * @author Captain * */public class ArrayDemo { public static void main(String[] args) {// 声明数组int[] arr = { 1, 10, 8 };// 输出测试数组System.out.println('测试的数组为:' + Arrays.toString(arr));// 通过下角标访问元素,数组的下角标是从0开始的System.out.println('通过数组的下角标访问元素,元素的下角标从0开始,下角标为0的元素是:' + arr[0]);// 将Array 转换成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); }}
问题解答
回答1:asList 是个泛型,可变参数的函数,所以传入数组的时候,这个数组如果是基本类型数据,会被当作一个对象处理,题中就是 int[]。如果数据定义成 Integer[] 的,在 asList 的时候会被当作多个可变参数展开。
另外一个问题在于,就算是 Integer[],它转换之后与 ArrayList<String> 也存在泛型类型不匹配的问题。在 Java8 中用 stream 可以很方便的转换过来,之前的 Java 版可以用循环,这里给你一个 Stack Overflow 上的答案
回答2:// 声明数组int[] arr = { 1, 10, 8 };// 输出测试数组System.out.println('测试的数组为:' + Arrays.toString(arr));// 通过下角标访问元素,数组的下角标是从0开始的System.out.println('通过数组的下角标访问元素,元素的下角标从0开始,下角标为0的元素是:' + arr[0]);// 将Array 转换成 ArraylistList<int[]> ss = Arrays.asList(arr);ArrayList<String> arrayList = new ArrayList<String>();
List<int[]>不能自动转ArrayList<String>
建议统一数据类型, int[] arr = { 1, 10, 8 };换成 String[] arr = { '1', '10', '8' };
// 声明数组String[] arr = { '1', '10', '8' };// 输出测试数组System.out.println('测试的数组为:' + Arrays.toString(arr));// 通过下角标访问元素,数组的下角标是从0开始的System.out.println('通过数组的下角标访问元素,元素的下角标从0开始,下角标为0的元素是:' + arr[0]);// 将Array 转换成 ArraylistArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
相关文章:
1. PHP中的$this代表当前的类还是方法?2. 想学下微信支付视频教程,能否付费获得?3. win下面的cmder中的vim . 中文乱码. 试了百度上的各种解决方式.. 还是没弄好4. css3 - 新版支付宝 账单页面滑动时月份栏被下一个月给顶上去是什么效果5. html5 - 请求到了网易云歌曲到在线地址,如何在web页面中播放?6. javascript - 网易云音乐是如何实现a标签href有值不跳转的?7. css3 - 淘宝网上这种抵抗反弹的效果如何做?8. python - Flask云部署,gunicorn运行成功,但是通过外网端口无法访问9. html5 - 自己的H5页面如何集成支付宝支付10. javascript - 类似于天猫和京东,商品详情页上拉查看图文详情,是通过什么方式实现的?
