java基础 --- Arrays.asList():返回指定数组支持的固定大小列表
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():返回指定数组支持的固定大小列表相关推荐
- 【Java】Arrays.asList 有坑
1.概述 阿里巴巴Java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法. 因为它的add/remove/clear方法会抛出Unsuppor ...
- java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))
java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件)) Fruit类 package com.zr.fruitSupermarket;/*** 水果* @author ZR* ...
- Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类
测试代码: package array;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; ...
- Java基础(五):数组和Java方法
一.Java数组: 1.声明数组变量: 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法:注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量. ...
- [JAVA基础] 简单又不简单的数组
引言 相信有过编程基础的小伙伴都知道数组这个数据结构,它应该也是我们第一个接触的数据结构,学过C或者C++的应该知道数组和指针紧密相关,那么在java里没有了指针,java里的数组又有哪些不同的特点呢 ...
- Java基础——Arrays类的排序方法
1.Arrays类的排序方法: public static void sort(类型[] a) //对数组进行默认升序排序 public static <T> void so ...
- [ 转载 ] Java基础12--基础学习总结——数组
java基础学习总结--数组 一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的 ...
- Java基础知识(五) 字符串与数组
Java基础知识 字符串与数组 1. 字符串的创建与存储的机制是什么 2. "==".equals和hashCode有什么区别 3. String.StringBuffer.Str ...
- 【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
最新文章
- 阿里云短信验证解决方案(java版)(redis存储)
- windows7 安装IIS没有default web site 解决方法
- informix11.7界面入门工具
- thinkphp mysql日志_MySQL的日志基础知识及基本操作学习教程
- Powershell 最大值堆栈实现
- 从函数式接口到lambda表达式
- 广度优先搜索(啊哈算法)
- Ubuntu 安装绿联CM448无线网卡驱动
- JDK10你必须了解的新特性
- (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
- AngularJS入门
- zigbee协议栈初使用(四)无线串口透传
- CF1146G Zoning Restrictions 最小割
- 省选LN站2023游记Day1
- Echarts绘制地图,且可以下钻到省区
- 欧拉角的概念理解和欧拉角旋转矩阵推导
- 微信小程序+阿里云+stm32f407的一个项目
- 开关电源元器件的选择
- HDOJ 1495非常可乐
- 更改计算机名称无法用用友,用友T3计算机名称更改不了怎么办?
热门文章
- laravel 记录sql语句
- HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
- 查看Oracle有哪些表或者视图
- 如何才能成为真正的程序员
- 如何搭建一个 Data Guard 环境
- Leetcode--450. 删除二叉搜索树中的节点
- python调用jar 性能_亲自有效---python 调用jar
- html5+实现图片自动切换,js图片自动切换效果处理代码
- java用户注册代码解析_java springmvc 注册中央调度器代码解析
- 苹果html抓包,苹果被开发者“抓包”违反了自己定的规则