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. dockerfile - [docker build image失败- npm install]2. docker安装后出现Cannot connect to the Docker daemon.3. javascript - c#如何向js传值4. java - mybatis怎么实现在数据库中有就修改,没有就添加5. docker gitlab 如何git clone?6. java中关于直接插入排序遇到的问题。7. javascript - webpack 多入口文件生成HTML文件;8. javascript - npm run build后调用api返回index.html9. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?10. node.js - mongoDB使用$gte的问题
