List.of() Vs Arrays.asList()

news2025/1/15 17:08:45

java中list.of和Arrays.asList方法有什么区别?

java中list.of和Arrays.asList方法有什么区别?

简介

Java 提供了几种用于创建列表的方便方法,包括 List.ofArrays.aslist。尽管这两种方法都可以很简单的创建集合对象,但它们实际上是有一些显著差异的。本文将介绍 Java 中的 List.of()Arrays.aslist() 之间的差异,并讲解它们的应用场景。最后,我们将清楚地了解何时使用哪方法以及它们之间有何不同。

List.of()

List.of() 是 Java 9 中引入的工厂方法,用于创建包含指定元素的不可变列表。以下是一些需要注意的要点:

  • 不可变性:List.of() 创建的集合是不可变的,这意味着它的大小和元素在创建后不能修改。

  • 固定大小:创建的集合具有固定大小,不支持添加或删除元素。

  • 空值:创建的集合中不允许存放空元素。如果尝试添加 null,则会抛出 NullPointerException

举例:

List<String> immutable_list = List.of("apple", "banana", "orange");

Arrays.asList()

Arrays.asList() 是自 Java 早期版本以来就可用的方法,它提供了一种创建由指定数组支持的固定大小列表的便捷方法。我们来看看它的特点:

  • 可修改性:Arrays.asList() 创建的集合是可修改的,允许您仅更新其元素而不是其结构。

  • 由数组支持:集合由原始数组支持,因此对列表元素的任何更改都会影响底层数组,反之亦然。

  • 固定大小限制:Arrays.asList() 创建的集合的大小是固定的,未来防止集合修改,添加或删除元素时会抛出 UnsupportedOperationException 异常。

  • 空值:与 List.of() 不同,Arrays.asList() 允许添加空元素。

举例:

List<String> mutable_list = Arrays.asList("red", "green", "blue");

应用场景

现在让我们了解 List.of()Arrays.asList() 的应用场景:

List.of()

当我们需要具有固定元素个数的不可变集合时,此方法是理想的选择。它会确保集合的完整性并防止意外修改。

import java.util.List;

public class ListOfExample {
    public static void main(String[] args) {
        String[] colorsArray = { "Red", "Green", "Blue" };
        List<String> colors = List.of(colorsArray);

        colorsArray[0] = "Yellow";

        // Accessing elements in the original array
        System.out.println(colors.get(0).equals(colorsArray[0])); // Output: false
        System.out.println(colors.get(1).equals(colorsArray[1])); // Output: true
        System.out.println(colors.get(2).equals(colorsArray[2])); // Output: true
    }
}

在上面的示例中,List.of() 用于创建不可变的颜色列表。任何通过添加或删除元素来修改列表的尝试都将导致抛出异常。

Arrays.asList()

当我们想要由指定数组支持的固定大小(可序列化)集合时,请使用此方法。对返回集合的任何更改也将写入原始数组。

import java.util.Arrays;
import java.util.List;

public class ArraysAsListExample {
    public static void main(String[] args) {
        String[] colorsArray = {"Red", "Green", "Blue"};
        List<String> colors = Arrays.asList(colorsArray);

        // Modifying the list (and array)
        colors.set(0, "Yellow");

        // Accessing elements in the original array
        System.out.println(colors.get(0).equals(colorsArray[0])); // Output: true
        System.out.println(colors.get(1).equals(colorsArray[1])); // Output: true
        System.out.println(colors.get(2).equals(colorsArray[2])); // Output: true
    }
}

本文翻译自国外论坛 medium,原文地址:https://medium.com/@mgm06bm/list-of-vs-arrays-aslist-7e2f7af64361,原文作者:mehmoodGhaffar

总结

理解 List.of()Arrays.asList() 之间的区别对于 Java 开发人员至关重要。 List.of() 创建具有固定大小的不可变集合,而 Arrays.asList() 生成的是由数组支持的可修改集合。通过考虑这两种方法的特点以及应用场景,我们可以在特定的编程需求场景选择适当的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【补档】基于PyTorch的手写数字识别

“过去都是假的,回忆是一条没有归途的路,以往的一切春天都无法复原,即使最狂热最坚贞的爱情,归根结底也不过是一种瞬息即逝的现实,唯有孤独永恒。” 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领…

新手程序员怎么接单?将超能力转化为 “钞能力” ?

程序员如何在自己年富力强的时候&#xff0c;最大化发挥自己的能力&#xff1f;将超能力转化为 “钞能力” &#xff1f; 有人还在苦哈哈当老黄牛&#xff0c;一身使不完的牛劲&#xff0c;有人已经另辟蹊径&#xff0c;开创了自己的一片致富小天地。 接单找兼职&#xff0c;…

PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准“多模态”技术

近期&#xff0c;2023年中国模式识别与计算机视觉大会&#xff08;PRCV&#xff09;在厦门成功举行。大会由中国计算机学会&#xff08;CCF&#xff09;、中国自动化学会&#xff08;CAA&#xff09;、中国图象图形学学会&#xff08;CSIG&#xff09;和中国人工智能学会&#…

最新GMS地下水数值模拟教程

详情点击公众号链接&#xff1a;最新GMS地下水数值模拟教程 前言 GMS三维地质结构建模 GMS地下水流数值模拟 GMS溶质运移数值模拟与反应性溶质运移模 目标 1.GMS的建模数据的收集、数据预处理以及格式等&#xff1b; 2.GMS的建模流程&#xff0c;包括三维地质结构建模、直接…

双硬盘安装双系统失败,grub-install to /dev/sd* failed, fatal error

一个机械硬盘一个固态硬盘&#xff0c;如果只装双系统推荐各自的系统的引导都放在各自的硬盘上&#xff0c;除非一个硬盘上想装两个系统。 安装失败&#xff0c;在写引导程序时提示grub-install /dev/sd* failed, fatal error&#xff0c;这种问题有各种各样的原因&#xff0…

脉冲信号485信号翻斗式雨量传感器的区别

本产品是一种水文、气象仪器&#xff0c;用于测量自然界降雨量&#xff0c;同时将降雨量转换为以开关量形式表示的数字信息量输出&#xff0c;以满足信息传输、处理、记录和显示等的需要。 本仪器由承雨器部件和计量部件等组成。承雨口采用口径Φ200mm。计量组件是一个翻斗式机…

选择适合自己的ERP系统

ERP系统是企业管理的核心工具之一&#xff0c;它能够整合各个业务部门的数据和流程&#xff0c;提供一个全面的管理平台。然而&#xff0c;在众多ERP系统中选择适合自己的一款并非易事。本文将全方位介绍选择适合自己的ERP系统的关键因素、评估步骤和注意事项&#xff0c;帮助企…

Linux常用命令——comm命令

在线Linux命令查询工具 comm 两个文件之间的比较 补充说明 comm命令可以用于两个文件之间的比较&#xff0c;它有一些选项可以用来调整输出&#xff0c;以便执行交集、求差、以及差集操作。 交集&#xff1a;打印出两个文件所共有的行。求差&#xff1a;打印出指定文件所包…

Django REST Framework完整教程-认证与权限-JWT的使用

文章目录 1.认证(Authentication)与权限(Permission)1.1.视图添加权限1.2.登录验证1.3.常用DRF自带权限类1.4.自定义权限类1.5.全局权限1.6.函数视图权限 2.认证详解2.1.认证方案2.2.如何使用TokenAuthentication&#xff1f; 3.JSON Web Token(JWT)认证3.1.工作原理3.2.安装3.…

【MySQL】分析SQL的几种方式

文章目录 一、查看SQL执行频率二、定位低效率执行SQL1. show processlist2. 慢查询日志 三、explain分析执行计划1. id2. select_type3. type4. key5. extra 四、show profile 一、查看SQL执行频率 show session status&#xff1a;显示 session 级的统计结果&#xff08;不写…

分享261个Python源码源代码总有一个是你想要的

链接&#xff1a;https://pan.baidu.com/s/14t-pmuphJQ-ouqQlOuwtiA?pwd8888 提取码&#xff1a;8888 项目名称 AI悦创Python小项目代码 AI视频创作ffmpegopenai-whispertts Apache Superset数据探查与可视化平台 v2.0.1 API Star工具箱 v0.7.2 Archery SQL审核查询平台 …

星型灯/南瓜灯/饰品灯/圣诞灯,各国检测标准有哪些?

星型灯/南瓜灯/饰品灯/圣诞灯&#xff0c;各国检测标准有哪些&#xff1f; 圣诞装饰灯作为热销产品&#xff0c;出于库存考虑&#xff0c;美国80%进口灯饰的采购在8-10月完成&#xff0c;而中国产品占这些进口灯饰的85&#xff05;左右&#xff0c;并且几乎所有LED灯都来自中国…

无法访问 github ,解决办法

一、使用代理&#xff08;首选&#xff09; 这种办法只需要更改github.com为代理的域名即可&#xff0c;使用方式与GitHub除了域名不同其他都一样&#xff0c;速度挺快&#xff0c;可登陆&#xff0c;可提交。 1、查看当前的代理&#xff1a; git config --global --get htt…

分享135个游戏Python源代码总有一个是你想要的

分享135个游戏Python源代码总有一个是你想要的 链接&#xff1a;https://pan.baidu.com/s/1rQuDok6XRWp-7RzFAfew8w?pwd8888 提取码&#xff1a;8888 游戏项目名称 100%基于Python的&#xff0c;模仿元气骑士的游戏 Chinese Chess Xiangqi 中国象棋 Python Firefly是…

c语言-消息队列

一、消息队列的介绍 消息队列的实现原理是将消息存储在一个队列中&#xff0c;生产者将消息放入队列的尾部&#xff0c;消费者从队列的头部取出消息进行处理。消息队列通常采用先进先出&#xff08;FIFO&#xff09;的方式进行消息的存储和处理。消息队列可以实现异步通信&…

软件安全性测试包含哪些类型?2023年专业软件安全测试报告获取

在现今信息化时代&#xff0c;软件安全性问题愈加引起人们的重视。为了确保软件的安全性&#xff0c;软件安全性测试成为不可或缺的一环。   软件安全性测试是指对软件系统进行全面、系统、综合的安全性评估和控制&#xff0c;旨在发现和证明软件系统存在的漏洞和安全隐患&am…

linux 下的java gate服务断掉的原因及解决思路

一.查询断掉的原因 1.查看gate日志&#xff0c;发现没有报错信息&#xff0c;突然就断了 2.查看是不是OOM导致 dmesg | grep java 发现确实Out of Memory了 3.发生问题的原因&#xff1a; 默认情况下, Linux kernels(内核)允许进程申请的量超过系统可用内存. 这是因为,在大多数…

成都瀚网科技有限公司:开抖音店铺有哪些注意事项?

成功经营一个小店不仅仅是发布产品视频那么简单&#xff0c;还需要注意一些重要的事情。开抖音店铺需要注意以下几点&#xff1a; 1、开抖音店铺有哪些注意事项&#xff1f; 合规管理&#xff1a;在抖音开店&#xff0c;首先要确保自己的运营合规。遵守相关法律法规及平台规定&…

【Linux进行时】进程控制

1.进程创建&#xff1a; 1.1fork函数 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 \#include <unistd.h> pid_t fork(void); 返回值&#xff1a;子进程中返回0&#xff0c;父进程返…

coreldraw2023永久免费版安装包下载

有小伙伴在用电脑查找软件程序的时候&#xff0c;看到了一款叫cdr软件的应用&#xff0c;自己之前没接触过&#xff0c;不知道cdr是什么软件&#xff1f;cdr软件是干什么的&#xff1f;十分好奇。其实它是一款平面设计软件&#xff0c;下面就给大家介绍下相关的cdr软件的知识。…