Arrays.asList():返回指定数组支持的固定大小列表

首先看下这个方法的源码注释,注意第一句,Returns a fixed-size list backed by the specified array.,
意思就是:返回指定数组支持的固定大小列表

所以:

不能增加和删除元素
不能增加和删除元素
不能增加和删除元素

细节1

入参为基本类型数组时,返回的List,打印出来是一个对象,size也是1

int[] a_int = {1, 2, 3, 4};
List ints = Arrays.asList(a_int);
System.out.println("ints:" + ints);//ints:[[I@5f4da5c3]
System.out.println("ints.size:" + ints.size());//ints.size:1

细节2

入参为非基本类型,比如是包装类时,打印正常,size是4。

//这是因为List的泛型不允许是基本类型
Integer[] a_integer = {1, 2, 3, 4};
List<Integer> integers = Arrays.asList(a_integer);
System.out.println("integers:" + integers);//integers:[1, 2, 3, 4]
System.out.println("integers.size:" + integers.size());//integers.size:4

细节3

List对某个index的值做修改,数组对应的值也修改,说明他俩指向的是同一个地方

Integer[] a_integer = {1, 2, 3, 4};
List<Integer> integers = Arrays.asList(a_integer);
integers.set(0, 0);
System.out.println(Arrays.asList(a_integer));//[0, 2, 3, 4]

细节4

这样new ArrayList再包一层,list才可以做增加和删除元素的操作

List<String> list1 = new ArrayList<>(Arrays.asList("qqq", "www", "eee"));
list1.add("aaa1");
list1.forEach(str -> System.out.println(str));

细节5

这样不包一层,list2就是定长的,不能做增加和删除元素
因为Arrays.asList返回的ArrayList不是咱们平时常用的java.util包下的ArrayList,而是Arrays类下的一个静态内部类,恰巧名字也叫ArrayList,由于这个内部类没有重写add和remove方法,所以不能进行增加和删除的操作

List<String> list2 = Arrays.asList("qqq", "www", "eee");
System.out.println(list2.contains("qqq"));
list2.add("aaa2");//报错:java.lang.UnsupportedOperationException

总结

Arrays.asList()这个方法,最好不要用于数组转list。

一般适用于初始化一个定长list,并赋值。

比如:

class TestArrays{private List<String> countrys = Arrays.asList("中国","日本","美国");public void 你的方法(){//具体使用countrys.size();countrys.get(0);}
}

java基础 --- Arrays.asList():返回指定数组支持的固定大小列表相关推荐

  1. 【Java】Arrays.asList 有坑

    1.概述 阿里巴巴Java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法. 因为它的add/remove/clear方法会抛出Unsuppor ...

  2. java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))

    java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件)) Fruit类 package com.zr.fruitSupermarket;/*** 水果* @author ZR* ...

  3. Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类

    测试代码: package array;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; ...

  4. Java基础(五):数组和Java方法

    一.Java数组: 1.声明数组变量: 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法:注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量. ...

  5. [JAVA基础] 简单又不简单的数组

    引言 相信有过编程基础的小伙伴都知道数组这个数据结构,它应该也是我们第一个接触的数据结构,学过C或者C++的应该知道数组和指针紧密相关,那么在java里没有了指针,java里的数组又有哪些不同的特点呢 ...

  6. Java基础——Arrays类的排序方法

    1.Arrays类的排序方法: public static void sort(类型[] a)        //对数组进行默认升序排序 public static <T> void so ...

  7. [ 转载 ] Java基础12--基础学习总结——数组

    java基础学习总结--数组 一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的 ...

  8. Java基础知识(五) 字符串与数组

    Java基础知识 字符串与数组 1. 字符串的创建与存储的机制是什么 2. "==".equals和hashCode有什么区别 3. String.StringBuffer.Str ...

  9. 【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

最新文章

  1. 阿里云短信验证解决方案(java版)(redis存储)
  2. windows7 安装IIS没有default web site 解决方法
  3. informix11.7界面入门工具
  4. thinkphp mysql日志_MySQL的日志基础知识及基本操作学习教程
  5. Powershell 最大值堆栈实现
  6. 从函数式接口到lambda表达式
  7. 广度优先搜索(啊哈算法)
  8. Ubuntu 安装绿联CM448无线网卡驱动
  9. JDK10你必须了解的新特性
  10. (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
  11. AngularJS入门
  12. zigbee协议栈初使用(四)无线串口透传
  13. CF1146G Zoning Restrictions 最小割
  14. 省选LN站2023游记Day1
  15. Echarts绘制地图,且可以下钻到省区
  16. 欧拉角的概念理解和欧拉角旋转矩阵推导
  17. 微信小程序+阿里云+stm32f407的一个项目
  18. 开关电源元器件的选择
  19. HDOJ 1495非常可乐
  20. 更改计算机名称无法用用友,用友T3计算机名称更改不了怎么办?

热门文章

  1. laravel 记录sql语句
  2. HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
  3. 查看Oracle有哪些表或者视图
  4. 如何才能成为真正的程序员
  5. 如何搭建一个 Data Guard 环境
  6. Leetcode--450. 删除二叉搜索树中的节点
  7. python调用jar 性能_亲自有效---python 调用jar
  8. html5+实现图片自动切换,js图片自动切换效果处理代码
  9. java用户注册代码解析_java springmvc 注册中央调度器代码解析
  10. 苹果html抓包,苹果被开发者“抓包”违反了自己定的规则