做营销网站/郑州网站建设公司排名
1. 概述
有时在Java中,为了方便,我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。
在本文中,我们将比较初始化小型临时数组的两种主要方法:List.of()和 Array.asList()。
2. Arrays.asList()
Java 自1.2版本引入的Arrays.asList(),从而简化了List对象的创建,该对象是Java Collections Framework的一部分。它可以将数组作为输入的同时并创建所提供数组的List对象。
方法源码:
public static <T> List<T> asList(T... a) {return new ArrayList<>(a);
}
说白了就是拿参数直接new了一个对象,和自己创建一个数组是一样一样的。
示例:
Integer[] array = new Integer[]{1, 2, 3, 4,5};
List<Integer> list = Arrays.asList(array);MatcherAssert.assertThat("匹配项不相等",list, Matchers.containsInAnyOrder(1,2,3,4,5));
创建一个简单的整数列表非常容易。
2.1. 返回列表上不支持的操作
asList()方法返回一个固定大小的列表。因此,添加和删除新元素都会抛出UnsupportedOperationException。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Assert.assertThrows("新增Item",UnsupportedOperationException.class, () -> list.add(6));List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Assert.assertThrows("删除Item",UnsupportedOperationException.class, () -> list.remove(1));
2.2. 使用数组
我们需要注意的是,列表不会创建输入数组的副本。相反,它使用List接口包装原始数组。因此,对数组的更改也会反映在列表上:
Integer[] array = new Integer[]{1,2,3};
List<Integer> list = Arrays.asList(array);
array[0] = 1000;
MatcherAssert.assertThat("list.get(0)的结果不等于1000",list.get(0),Matchers.equalTo(1000));
2.3. 更改返回列表
另外,Arrays.asList()返回的列表是可变的。也就是说,我们可以更改列表的各个元素:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
list.set(1, 1000);
MatcherAssert.assertThat("list.get(0)的结果不等于1000",list.get(0),Matchers.equalTo(1000));
最终,这可能会导致不良的副作用,从而导致难以发现的错误。当提供数组作为输入时,列表上的更改也将反映在数组上:
Integer[] array = new Integer[]{1, 2, 3};
List<Integer> list = Arrays.asList(array);
list.set(0,1000);
assertThat(array[0]).isEqualTo(1000);
小结:使用Arrays.asList()创建的列表,可以对内容值进行更改,但是不能对列表的长度进行更改。
我们看看另一种创建列表的方法。
3. List.of()
与数组asList()方法相反,在Java 9 中引入了一个更方便的新的方法:List.of()。它将创建不可修改的List对象的实例:
Integer[] array = new Integer[]{1, 2, 3, 4,5};List<Integer> list = List.of(array);MatcherAssert.assertThat("匹配项不相等",list, Matchers.containsInAnyOrder(1,2,3,4,5));
3.1. 与Arrays.asList()的区别
与Arrays.asList()的主要区别在于List.of ()返回一个不可变列表,该列表是所提供的输入数组的副本 。因此,对原始数组的更改不会反映在返回的列表中:
Integer[] array = new Integer[]{1, 2, 3, 4, 5};
List<Integer> list = List.of(array);
array[0] = 1000;
MatcherAssert.assertThat("list.get(0)的值不为1",list.get(0),Matchers.equalTo(1));
此外,我们无法修改列表的元素。如果我们尝试这样做,它将抛出UnsupportedOperationException:
List<String> list = List.of(1, 2, 3, 4, 5);
assertThrows(UnsupportedOperationException.class, () -> list.set(1, 6));
3.2. 空值
我们还应该注意List.of()不允许空值作为输入,并且会抛出NullPointerException:
assertThrows(NullPointerException.class, () -> List.of(1, null, 2));
4。结论
Arrays.asList()返回由指定数组支持的固定大小列表。对数组所做的更改将在返回的列表中可见,对列表所做的修改将在数组中可见。返回的列表是Serializable的,并实现了RandomAccess。
List.of()返回包含任意数量元素的不可修改列表。另外,此方法还接受单个数组作为参数。结果列表的元素类型将是数组的组件类型,列表的大小将等于数组的长度。要使用作为数组的单个元素创建列表,请执行以下操作:
String[] array = ... ;
List<String[]> list = List.<String[]>of(array);
这将导致List.of(E)方法被调用。
相关文章:

Arrays.asList() 和 List.of() 的列表之争
1. 概述 有时在Java中,为了方便,我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。 在本文中,我们将比较初始化小型临时数组的两种主要方法:List.of()和 Array.asList()。 2. Arrays.asList() Java 自…...

基于51单片机的停车场管理系统仿真电路设计
**单片机设计介绍,基于51单片机的停车场管理系统仿真电路设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 停车场管理系统仿真电路设计介绍 停车场管理系统主要用于自动化管理和控制停车场,以提高停车…...

APIView单一资源的查看更新删除
APIView单一资源的查看更新删除 一、构建路由 re_path("author/(/d)",AuthorDetailView.as_view)), 二、视图类 在views.py中添加AuthorDetailView类 class AuthorDetailView(APIView):def get(self, request, pk):author Author.objects.get(pkpk)serializer A…...

UML--类图的表示
1. 类的表示 1.1 访问属性 : public -: private #: protected 1.2 接口与抽象类 斜体 表示抽象类和抽象方法 <<Interface>> 类表示接口 1.3 类图示意 Mclass- val: int getVal(): int 2. 类关系 2.1 实现关系 空心三角形和虚线组成 B实现A,则三角形尖尖朝…...

JVM字节码文件浅谈
文章目录 版权声明java虚拟机的组成字节码文件打开字节码文件的姿势字节码文件的组成魔数(基本信息)主副版本号(基本信息)主版本号不兼容的错误解决方法基本信息常量池方法 字节码文件的常用工具javap -v命令jclasslib插件阿里art…...

DBever 连接trino时区问题 The datetime zone id ‘GMT+08:00‘ is not recognised
DBever连接trino 测试连接成功,但是执行sql报时区不对、如果你默认使用的是大于jdk8的版本 会存在这个问题,因为jdk版本 jdk8 和jdk17 版本默认时区是不同的 trino官网明确说明了时区默认跟jdk走 解决方案 可以先行查看JDK本地时区库版本,执…...

xlua源码分析(二)lua Call C#的无wrap实现
xlua源码分析(二)lua Call C#的无wrap实现 上一节我们主要分析了xlua中C# Call lua的实现思路,本节我们将根据Examples 03_UIEvent,分析lua Call C#的底层实现。例子场景里有一个简单的UI面板,面板中包含一个input fie…...

MySql优化经验分享
一条sql的具体执行过程 连接 我们怎么查看MySQL当前有多少个连接? 可以用show status命令,模糊匹配Thread, Show global status like "Thread%" show global variables like wait timeout;—非交互式超时时间,如JDBC…...

【Linux】:使用git命令行 || 在github创建项目 || Linux第一个小程序——进度条(进阶版本)
在本章开始之前还是先给大家分享一张图片 这是C的笔试题 感兴趣的同学可以去试一试 有难度的哟 也可以直接在牛客网直接搜索这几道题目哈 好了今天我们正式进入我们的正题部分 🕖1.使用git命令行 安装git yum install git🕠2.在github创建项目 使用…...

Kotlin apply 交换两个数
代码: fun main() {var a 1var b 2a b.apply {b aprintln("$b")println("$this")}println("$a $b") }打印结果: 1 2 2 1原理分析: /*** Calls the specified function [block] with this value as its r…...

Android jetpack : Navigation 导航 路由 、 单个Activity嵌套多个Fragment的UI架构方式
Android Navigation 如何动态的更换StartDestination &&保存Fragment状态 Navigation(一)基础入门 google 官网 : Navigation 导航 路由 讨论了两年的 Navigation 保存 Fragment 状态问题居然被关闭了 Navigation是一种导航的概念,即把Activ…...

【react】在react中祖父、父亲、孙子组件层层解构其余属性props时报错children.forEach is not function
起因 报错children.forEacht is not function 分析原因 由于地址组件本身存在options,此时父组件又传递…otherProps,且解构了父级组件的otherProps,其中others解构后的属性就有options,因此产生了属性冲突,导致属性…...

P9831 [ICPC2020 Shanghai R] Gitignore
P9831 [ICPC2020 Shanghai R] Gitignore - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 只看题意翻译这道题是做不出来的,还要去看英文里面的规定(这里就不放英文了),主要问题是不要公用子文件夹。 例如: 1 / a / 2 2 / a / 3…...

LinkList集合方法(自写)
在使用以下方法时需要定义一个LinkNode类来定义变量,new一个新对象进行调用,输出时需要定义输出方法 public class ListNode {int value;ListNode next;//public ListNode(int value) {this.value value;}public String toString(){return "ListN…...

Ansible playbook自动化运维工具详解
Ansible playbook自动化运维工具详解 一、playbook的相关知识1.1、playbook 的简介1.2、playbook的 各部分组成 二、基础的playbook剧本编写实例三、 playbook的定义、引用变量3.1、基础变量的定义与引用3.2、引用fact信息中的变量 四、playbook中的when条件判断和变量循环使用…...

图像切分:将一张长图片切分为指定长宽的多张图片
1.需求 比如有一张很长的图片其大小为宽度779,高度为122552,那我想把图片切分为779乘以1280的格式。 步骤如下: 使用图像处理库(如PIL或OpenCV)加载原始图片。确定子图片的宽度和高度。计算原始图片的宽度和高度&am…...

ROS学习笔记(5):ros_control
1.ros_control简介 ros_control - ROS Wiki ros_control是为ROS提供的机器人控制包,包含一系列控制器接口、传动装置接口、控制器工具箱等,有效帮助机器人应用功能包快速落地,提高开发效率。 2.ros_control框架 ros_control总体框架: 针对…...

《008.Springboot+vue之自习室选座系统》
[火]《008.Springbootvue之自习室选座系统》 项目简介 [1]本系统涉及到的技术主要如下: 推荐环境配置:DEA jdk1.8 Maven MySQL 前后端分离; 后台:SpringBootMybatisredis; 前台:vueElementUI; [2]功能模块展示: 前端…...

道可云元宇宙每日资讯|5G数智新时代元宇宙发展论坛在厦门举办
道可云元宇宙每日简报(2023年11月6日)讯,今日元宇宙新鲜事有: 5G数智新时代元宇宙发展论坛在厦门举办 3日,由2023年中国金鸡百花电影节执委会主办、厦门电影节有限公司协办的“5G数智新时代元宇宙发展论坛暨‘中国白德…...

使用 Go 写入文件
在本教程中,我们将学习如何使用 Go 将数据写入文件。我们还将学习如何同时写入文件。 本教程有以下部分 将字符串写入文件将字节写入文件逐行将数据写入文件附加到文件同时写入文件 由于 Playground 不支持文件操作,请在本地系统中运行本教程的所有程…...

调用DeleteLocalRef的正确姿势
做安卓jni相关开发的总会在涉及到jni变量释放时怀疑人生,what? where? when? who? why? how? how much? 最近碰到一个比较奇怪的问题,有一个jni方法的耗时在随着调用次数的增加而上涨,但是没有明显的内存泄漏,经过我缜密分…...

抖音小店从0到1起店流程,实操经验分享!
我是电商珠珠 很多人在开店之后,并不知道怎么做。往往会有人跑来问我说,开店之后怎么做啊,流程方面我还不是很熟悉啊等等。 这份起店流程备好了,将来对你有用。 第一步,店铺基础设置 在店铺开好之后,不…...

MySQL权限
权限 MySQL 允许客户端用户连接到服务器并访问服务器管理数据,MySQL 用户权限系统的主要功能是对给定主机连接的用户进行身份验证,并将该用户与数据库的权限相关联。 在 MySQL8 之前,授权表使用 MyISAM 并且是非事务性的,在 MyS…...

Nginx服务器安装证书并启用SSL(acme.sh)
前提 您已购置vps服务器,例如阿里云全球站ecs、AWS EC2、Azure VM、GCP Compute等安全组已开启80、443端口,且访问源设置为0.0.0.0/0域名已设置A记录指向当前操作服务器,若您使用aws ec2,有公有 IPv4 DNS,可供使用 安…...

c++实现观察者模式
前言 我觉得这是最有意思的模式,其中一个动,另外的自动跟着动。发布-订阅,我觉得很巧妙。 代码 头文件 #pragma once #include<vector> #include<string> #include<iostream>// 抽象观察者 class Aobserver { public:v…...

C 语言左移位操作在kernel驱动子系统中的特殊用途
文章目录 前言一、C语言左移位操作介绍1. 左移位二、左移位操作在kernel 驱动子系统中的应用1. 左移位操作在 V4L2, Media 子系统中的应用实例2.左移位操作在 DRM 子系统中的应用实例2.1 左移位操作在struct drm_crtc 中的应用2.2 左移位操作在struct drm_encoder 中的应用总结…...

kafka3.6.0集群部署
环境准备 机器环境 系统主机名IP地址centos7.9kafka01192.168.200.51centos7.9kafka02192.168.200.52centos7.9kafka03192.168.200.53 所需软件 jdk-8u171-linux-x64.tar.gzapache-zookeeper-3.8.3-bin.tar.gz https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zook…...

JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}
问题:JAVA客户端访问influxdb2报错 说明:当前influxdb版本:2.6.1 使用依赖: <dependency><groupId>org.influxdb</groupId><artifactId>influxdb-java</artifactId><version>2.10</vers…...

Mysql查询今天到期、n天即将到期、还有n天过期相关sql
超级治愈的一段话 其实你已经很幸福了,吃饱穿暖,没病没灾,隔三岔五还能吃顿好的,偶尔还能睡到自然醒,肥嘟嘟的一身福气。人这一辈子,要是能够逃过天灾,躲过战乱,不遇歹人,不生大病,就已经是非常幸运了,要是还能家庭和谐,收人稳定,三五知己,那更是天大的福泽。 -…...

【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、深度利用1、反弹Shell 说明内容漏洞编号CVE-2017-5645漏洞名称Log4j Server …...