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. mysql 可以从 TCP 连接但是不能从 socket 链接2. sql语句 - 如何在mysql中批量添加用户?3. mysql 非主键做范围查找实现原理的一点困惑4. mysql - JAVA怎么实现一个DAO同时实现查询两个实体类的结果集5. mysql建表索引问题求助6. mysql - PHP定时通知、按时发布怎么做?7. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。8. 事务 - mysql共享锁lock in share mode的实际使用场景9. mysql - 数据库建字段,默认值空和empty string有什么区别 11010. node.js - mysql如何通过knex查询今天和七天内的汇总数据
