一、java.util.Arrays.asList() 的一般用法

如果将一个数组转换为 List,可以将需要转化的数组作为参数,或者直接把数组元素作为参数。但是其中参数必须是包装类类型,如果使用的是基本数据类型,可以使用Jdk8新特性进行解决

具体代码如下:

//1将需要转化的数组作为参数
String[] arrayList = {"1","2","3"};
List<String> myList = Arrays.asList(arrayList);//2.直接把数组元素作为参数
List<String> myList = Arrays.asList("1","2","3");

对于参数类型的不同的使用和解决方案如下:

//1.使用包装类数组
Integer[] arrayList = {1,2,3};
List<Integer> lists = arrays.asList(arrayList);
sout(lists.size());//3
lists.foreach(system.out::print);//1,2,3//2.使用基本类型数组
int[] arr = {1,2,3};
List lists = arrays.asList(arr);
sout(lists.size());//1
lists.foreach(system.out::print);//其打印出来的结果是是对象的hashCode以上打印出来的结果,并不是我们所预期的结果
asList 方法的参数必须是对象或者对象数组,而原生数据类型不是对象——这也正是包装类出现的一个主要原因。当传入一个原生数据类型数组时,asList 的真正得到的参数就不是数组中的元素,而是数组对象本身!此时List 的唯一元素就是这个数组。因为asList方法的签名如下:
public static <T> List<T> asList(T... a)
参数类型是 T ,根据官方文档的描述,T 是数组元素的 class
我们知道任何类型的对象都有一个 class 属性,这个属性代表了这个类型本身。原生数据类型,比如 int,short,long等,是没有这个属性的,具有 class 属性的是它们所对应的包装类 Integer,Short,Long。//可使用jdk8新特性进行解决
//Java 8 新引入的 Stream 操作
List myList = Arrays.stream(arr).boxed().collect(Collectors.toList());//1,2,3

对于arrays.asList()返回一个由指定数组生成的固定大小的 List。不可对其返回的值进行随意的增加和删除操作。

@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {return new ArrayList<>(a);
}
//方法中的的确确生成了一个 ArrayList ,这不应该是支持动态扩容的吗?别着急,接着往下看。紧跟在 asList 方法后面,有这样一个内部类:private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
{private static final long serialVersionUID = -2764017481108945198L;private final E[] a;ArrayList(E[] array) {a = Objects.requireNonNull(array);}@Overridepublic int size() {return a.length;}//...
}这个内部类也叫 ArrayList ,更重要的是在这个内部类中有一个被声明为 final 的数组 a ,所有传入的元素都会被保存在这个数组 a 中。到此,谜底又揭晓了: asList 方法返回的确实是一个 ArrayList ,但这个 ArrayList 并不是 java.util.ArrayList ,而是 java.util.Arrays 的一个内部类。这个内部类用一个 final 数组来保存元素,因此用 asList 方法产生的 ArrayList 是不可修改大小的。

Arrays.asList的使用相关推荐

  1. 为什么阿里巴巴开发手册明确说明 Arrays.asList() 不能使用其修改方法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5d10e52ee51d454 ...

  2. Arrays.asList问题

    2019独角兽企业重金招聘Python工程师标准>>> 先看实例程序,然后我们分析该程序 public class ArraysClone {@Testpublic void tes ...

  3. Arrays.asList方法总结

    作用 : Arrays.asList() 将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是 ...

  4. Arrays.asList详解

    记得以前写过一段这样的代码: String[] arr=...{"a","b","c"}; List l = Arrays.asList(a ...

  5. 集合 Arrays.asList | java.lang.UnsupportedOperationException: null

    // Arrays.asList(xxx) 返回的是一个内部类, 不是正常认为实现的Collection // 无法进行增删 // 直接解决办法List<String> asList = ...

  6. 正确认识Arrays.asList方法

    Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: /*** Returns a fixed-size list backed by ...

  7. Java Arrays.asList注意事项

    Arrays.asList用来将数组转化为List,这个看似功能很明了的方法却暗藏玄机. 请先看下面的程序: int[] datas = new int[]{1,2,3,4,5}; List list ...

  8. java arrays.aslist()_Java中Arrays.asList()方法详解及实例

    Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] ...

  9. arrays中copyof_为什么阿里巴巴开发手册明确说明 Arrays.asList() 不能使用其修改方法?...

    作者:我想问问天 来源:https://juejin.im/post/5d10e52ee51d454f6f16ec11 引语: 阿里巴巴java开发规范说到使用工具类Arrays.asList()方法 ...

  10. java集合的批量新建_java使用Arrays.asList快速创建List集合

    程序中某段案例代码如下: Map> tMap = new HashMap>(); tMap.put(name, Arrays.asList(new CronTrigger[] { trig ...

最新文章

  1. C++ 程序不一定从 main 处开始执行
  2. 服务程序增加系统托盘
  3. 云视睿博流媒体服务器Lit,《云视睿博流媒体服务器参数表.docx
  4. 面向对象编程的五大基本原则
  5. CSS3 选择器(Selector)
  6. 非法关机的时候,postgresql启动故障的解决
  7. java xsi type_java – JAXB – 如何根据XML值设置XML元素的xsi:type?
  8. 电力施工作业现场安全综合管控平台项目解决方案
  9. java xmap_xml和java Bean的直接转换,Xmap
  10. 什么浏览器有html控制台,怎么打开浏览器的js控制台
  11. u盘安装Linux全过程,图文讲解用U盘安装Ubuntu Kylin全过程
  12. 计算机故障维修智能检测平台管理系统,计算机检测维修与数据恢复技能大赛竞赛设备采购项目.doc...
  13. CRM如何帮助企业提高客户满意度?
  14. word2vec词向量原理
  15. SpringCloud停更服务一览表
  16. mysql认证题库_MySQL 8 OCP(1Z0-908)认证考试题库原题(第11题)
  17. Linux 线程同步
  18. ftp 自动下载文件并解压
  19. 流量红利后期低成本的获客方式
  20. 碎碎念No.08 那个同居的姑娘

热门文章

  1. 前端基础:jQuery
  2. mysql主键约束自动增长_MySQL教程45-MySQL主键自增长
  3. Entrypoint size limit
  4. ROS学习笔记(一)补充篇 参考创客制造
  5. 华为鸿蒙mate,魅族确定将接入鸿蒙;华为鸿蒙平板MatePad Pro官宣
  6. 长春吉林大学计算机系奖状,校工会慰问五一劳动奖章、奖状以及巾帼标兵岗获奖个人和集体...
  7. IntelliJ IDEA下载安装及配置JDK
  8. Mac安装docker(轻松解决安装)
  9. CoordConv:卷积神经网络「失陷」,CoordConv来填坑
  10. 英语学习打卡(第二天)