【Java】Arrays.asList() 详解以及如何将数组转化为ArrayList

关于Arrays.asList()方法的使用 Arrays.asList 创建的 ArrayList 的使用 Arrays.asList() 方法生成的 ArrayList 类对象,在调用 add(),remove() 等方法时会报错 public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Python"); list.add("C#"); } 通过源码分析 Arrays.asList() 生成的 Array 阅读详情

1.Arrays.asList() 作用

Arrays.asList()方法是将数组转化成List集合。
用此方法得到的List的长度是不可改变的,

 List<String> list = Arrays.asList("a","b","c");

2.Arrays.asList() 注意事项

(1)该方法适用于对象型数据的数组(String、Integer…)
(2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean)
(3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新
(4)不支持add()、remove()、clear()等方法

解释:不支持add()、remove()、clear()等方法

当你向这个List添加或删除一个元素时(例如 list.add("d");)程序就会抛出异常(java.lang.UnsupportedOperationException)。

总结:

如果你的List只是用来遍历,就用Arrays.asList()。
如果你的List还要添加或删除元素,还是乖乖地new一个java.util.ArrayList,然后一个一个的添加元素。

3.Arrays.asList() 代码示例

 public static void main(String[] args) {
        // 1.对象类型(String型)的数组使用asList()
        String []strings={"aa","bb","cc"};
        List<String> stringList=Arrays.asList(strings);
        System.out.println("1.String类型数组使用asList(),正常");
        for (String str:stringList){
            System.out.println(str+" ");
        }

        System.out.println("------------");

        // 2.对象类型(Integer型)的数组使用asList()
        Integer []integers={1,2,3};
        List<Integer> integerList=Arrays.asList(integers);
        System.out.println("2.Integer型的数组使用asList(),正常");
        for (int i:integerList){
            System.out.println(i+" ");
        }

        System.out.println("------------");

        // 3.基本数据类型使用asList(),出错
        int []nums=new int[]{1,2,3};
        List<int []> intList=Arrays.asList(nums);
        System.out.println("3.基本数据类型的数组使用asList(),出错(输出的是一个引用)");
        for (Object obj:intList){
            System.out.println(obj.toString());
        }
        System.out.println();
        System.out.println("这样遍历才能正确输出:");
        int []nums1=(int [])intList.get(0);
        for (int i:nums1){
            System.out.println(i+" ");
        }

        System.out.println("------------");

        // 4.当更新数组或者List,另一个将自动获得更新
        System.out.println("4.当更新数组或者List,另一个将自动获得更新:");
        integerList.set(0,5);
        for (int i:integerList){
            System.out.println(i+" ");
        }
        System.out.println();
        for (int i:integers){
            System.out.println(i);
        }

        System.out.println("------------");

        // 5. add()  remove()  报错
        System.out.println("5. add()  remove()  报错");
//        integerList.remove(0);
//        integerList.add(3,4);
//        integerList.clear();
    }

输出结果:

1.String类型数组使用asList(),正常
aa 
bb 
cc 
------------
2.Integer型的数组使用asList(),正常
1 
2 
3 
------------
3.基本数据类型的数组使用asList(),出错(输出的是一个引用)
[I@4554617c

这样遍历才能正确输出:
1 
2 
3 
------------
4.当更新数组或者List,另一个将自动获得更新:
5 
2 
3 

5
2
3
------------
5. add()  remove()  报错
Exception in thread "main" java.lang.UnsupportedOperationException

4.如何正确的将数组转换为 ArrayList

4.1 使用Arrays.asList()

List<String> stringList0=Arrays.asList("a","b","c");

4.2 使用Java8的Stream

        // 对象类型
        Integer []array={1,2,3};
        List list=Arrays.stream(array).collect(Collectors.toList());

        // 基本类型也可以实现转换(依赖boxed的装箱操作)
        int []array1={4,5,6};
        List list1=Arrays.stream(array1).boxed().collect(Collectors.toList());

参考:
参考一

Arrays.asList() 详解 Arrays.asList() 详解 【1. 要点】 该方法是将数组转化成List集合的方法。 List list = Arrays.asList(“a”,“b”,“c”); 注意: (1)该方法适用于对象型数据的数组(String、Integer…) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean) (3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新 (4)不支持add()、remove()、clear() 阅读详情

相关推荐

深度:善用人工智能推动高等教育学习、教学与治理的深层变革

从学习方式的革新到教学模式的重构,再到治理体系的升级,人工智能已不再仅仅是辅助工具,而是成为重塑高等教育生态的核心驱动力。某高校的创新实践表明,引入AI生成虚拟患者后,医学生在临床沟通训练中的共情能力提升27%,印证了技术工具与人文教育的互补效应。美国卡内基梅隆大学的实践表明,经过系统培训的教师,其课程设计效率提升40%,且能精准定位83%学生的学习难点。当每个学生都掌握提示工程原理,每位教师都能驾驭AI教学工具,每所高校都建立智能治理框架时,教育将真正实现"以人为本"与"技术为用"的有机统一。

IT胶囊 1093

Arrays.asList详解和示例

注意 (1)该方法适用于对象型数据的数组(String、Integer…) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean) (3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新 (4)不支持add()、remove()、clear()等方法 (5)此方法得到的List长度是不可变的 (6)asLis...

Venus's Blog 6万+

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1928

Java Arrays.asList()方法详解

本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑。 首先看Arrays.asList()的源码 public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); } 使用该方法 可以将一个变长参数或者数组转换成List 看似很简单但实际使用起来却会发现存在很多问题,看下面代码来发现问题。 先来看第一个问题,基本类型数组作为参数问题。 publi

cristianoxm的博客 2万+

开发者体验度量:构建DevEx评估体系的方法论与工具

在深入讨论度量方法前,我们需要明确什么是开发者体验(DevEx)。许多人将其简化为"开发工具好不好用",这是一个危险的误解。开发者体验是指开发者在完成工作过程中的整体感受和效率,它由三大核心维度组成:工具与基础设施:开发、测试、部署工具链的效能流程与协作:工作流程的顺畅度和团队协作的效率文化与成长:支持实验、学习和专业发展的环境这三个维度相互作用,共同决定了开发者能否高效且愉悦地完成工作。开发者体验不是一个目的地,而是一段持续的旅程。

2401_88760782的博客 1428

【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车

因为MPSOC还有一种启动模式是eMMC,接下来咱就实现从eMMC启动。

ryo891012的博客 474

从Arrays.asList到Collection.toArray()

Arrays.asList() 简介 Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。 String[] myArray = {"Apple", "Banana", "Orange"}; List<String> myList = Arrays.asList(myArray); //上面两个语句等价于下面一条语句 List<String> myList = Arrays.asList("Apple","Banana", "Or

weixin_45942124的博客 712

4万字一文带你看懂车载摄像头技术、市场、发展前景

1、小孔成像 在战国初期,我国学者墨子(公元前468年-公元前376年)和弟子们完成了世界上第一个小孔成像的实验,并记录在《墨经》中:“景到,在午有端,与景长。说在端。”“景。光之人,煦若射,下者之人也高;高者之人也下。足蔽下光,故成景于上;首蔽上光,故成景于下。在远近有端,与于光,故景库内也。” 此文解释了小孔成倒像的原因,指出了光沿直线传播的性质。这是对光直线传播的第一次科学解释。 而西方世界直到公元前350年,古希腊学者亚里士多德提出光学法则,西方人从此了解小孔成像的光学原理。

m0_58838529的博客 1492

Arrays.asList() 使用指南

笔记总结自公众号 JavaGuide,感谢Guide哥! 简介 Arrays.asList() 可以将一个数组转化为一个 List 集合 String[] arr = {"aaa","bbb"}; List<String> list = Arrays.asList(arr); //上面两行等价于下面一条语句 List<String> list1 = Arrays.asList("aaa", "bbb"); JDK 源码: public st

Leessang 451

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw多Agent模式为企业提供高效的AI助手团队解决方案。通过创建4个独立的飞书机器人(主助理、内容创作、技术开发、AI资讯),每个连接专属Gateway和Agent模型(如Claude Opus/Sonnet、Gemini 2.5),实现专业分工。相比单Agent模式,多Gateway架构具有配置清晰、互不干扰、无需手动切换等优势。系统采用Profile隔离机制,各Agent拥有独立配置和端口。部署过程包括创建机器人应用、配置Agent、运行自动化脚本等步骤,支持私聊或群组@使用。日常提供状态

Maynor的博客 5096

华为OD机试真题 新系统2026-04-15 Java&Go 实现【小猫钓鱼纸牌游戏】

有两名玩家甲和乙,他们玩一种“小猫钓鱼”扑克牌游戏。扑克牌为A、2、3、....J、Q、K,不考虑花色都用1-13来表示,然后给甲,乙两人各发n张牌,按给定顺序排成队列,这些牌背面朝上,正面朝下放置,队列的第一个元素是背面的第一张牌。 游戏规则如下:

MISAYAONE的博客 348

java Arrays.asList方法注意事项

1. 简介 Arrays.asList()方法可以将数组转化为长度固定的列表。 该方法强调了列表的长度是固定的,因此不能使用list的add和remove方法修改list长度。 2. 示例 1 import java.util.*; 2 3 public class ListFunc1 { 4 public static void main(String[] a...

weixin_30500663的博客 102

Mac mini M2 部署 OpenClaw:最稳 7×24 本地 AI 服务器

Mac mini M2 凭借其强大的 M2 芯片、低功耗和静音特性,成为部署 OpenClaw AI 服务器的理想平台。本文详细介绍了从系统配置到 OpenClaw 部署的全过程,包括 Docker 环境搭建、docker-compose 编排、性能优化方案以及开机自启设置。通过统一内存架构和高效 SSD,M2 版 Mac mini 在 AI 推理速度上显著优于前代产品,同时保持极低的功耗(仅 8W),适合 7×24 小时稳定运行。部署方案充分利用了容器化技术,确保了服务的可靠性和可维护性。

一键难忘的博客 2953

Arrays.asList()

学习springboot时看到了**Arrays.asList()**方法,特别记录: 该方法是将数组转化成List集合的方法。 List list = Arrays.asList(“a”,“b”,“c”); 注意: (1)该方法适用于对象型数据的数组(String、Integer…) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean) (3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新 (4)不支持ad

lihanhan98的博客 205

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Arrays.asList()方法的使用

首先,该方法是将数组转化为list。有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean),得使用包装类型 (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新 (3)不支持add和remove方法 上代码: Copy import java.util.Arrays; import java.util.List; abstract public class AsllistTest { public

橘子汁的博客 1034

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Arrays.asList()无法新增删除元素

Arrays.asList() 返回的 List 是一个 Arrays 类的内部类,它持有一个对原始数组的引用。这意味着对 List 的修改会反映到数组上。这个 List 的大小是固定的,不能进行增加或者删除的操作,否则会抛出 UnsupportedOperationException 异常。下图为Arrays.asList() 的源码,不难看出本质上是对原始数组的引用。

li2621454592的博客 744

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java.lang.UnsupportedOperationException: null 异常处理

在使用 Arrays.asList()转化数组成为list的时候,生成了ArrayList, 表面上看是 java.util.ArrayList,实际上是Arrays的内部类ArrayList, 两个ArrayList,都是继承 AbstractList,这他妈就是坑,不进去看源码仔细了解,还以为是一个ArrayList,但是进去后才发现,Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法,再去看AbstractList的add和remove方法,居然是直接.

技术交流,进来交个朋友 6220

利用Jdk 6260652 Bug解析Arrays.asList

在java.util.ArrayList源码中: c.toArray might (incorrectly) not return Object[] (see 6260652) 产生疑惑: 附上Java Bug 网址: Java Bug Database ,可以根据关键词或bug id 查询详细信息这个Bug的描述中可以看出:原因:Arrays内部实现的ArrayList的toArray()...

weixin_30938149的博客 319

关于数组直接转换为List中的小问题

在一般我们遇到数组转化为List时 我们一般直接: List<String> list = Arrays.asList(arr); 看代码: import java.util.Arrays; import java.util.List; public class CheckArrayListTest { public static void main(String[] ...

爱情的错的博客 130

Arrays基础常用方法

Arrays工具类常用方法: 1. 声明数组 int[] aArray = {88,99,25,55,65} ; 2. 打印数组 Arrays.toString() Arrays.toString(aArray); 3. 排序数组 Arrays.sort() Arrays.sort(aArray); // 升序 4. 检查数组是否包含某个值=====Arrays.asLis().contains() Arrays.asList(aArray).contains(99); 5. 将ArrayLi

weixin_40432292的博客 444

Arrays.asList使用指南

Arrays.asList使用指南

lancehao的博客 935

java数组转list(Arrays .asList)

习惯性的错误代码: Integer[] intArr = {1,2,3}; List<Integer> lst = Arrays .asList(intArr); lst.add(4); 报UnsupportedOperationException异常,原因是Arrays .asList() 返回的固定大小的列表,无法进行add、remove等操作; 正确的用法: ...

weixin_30868855的博客 149

java 将数组转为List集合

Java 中可以使用 java.util.Arrays.asList(T... a) 方法将数组转换为 List 集合。 例如,下面的代码演示了如何将一个整数数组转换为 List 集合: int[] arr = {1, 2, 3, 4, 5}; List<Integer> list = Arrays.asList(arr); 注意,转换后的 List 集合是一个固定大小的集合,不能进...

weixin_35755562的博客 2836

数组转换为ArrayList和Arrays.asList()的使用

对于数组转化成集合的学习记录 我们平时在开发中对于数组转化成一个List集合,最常用的方法应该就是Arrays.asList() String[] myArray = { "darin", "tom", "eric" }; List<String> myList = Arrays.asList(myArray); 《阿里巴巴java开发手册》对这个方法的描述为: Arrays.asList()将数组转化为集合后,其地转化后的集合的底层仍然是数组。如下图 这个方法的使用时候,传

qq_35248832的博客 1221
上一篇: 【Java】Java的HashMap按key排序和按value排序的实现
下一篇: 【Java】String.join()方法
★半岛铁盒
博客等级 码龄7年 1559粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值