【Java】Java数组链表类详记

news2024/9/28 9:26:56

本文仅供学习参考!

相关文章地址:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

https://www.w3schools.com/java/java_arraylist.asp

https://www.runoob.com/java/java-arraylist.html

Java ArrayList 基础知识

ArrayList是 Java 集合框架的一部分,位于java.util包中。它实现了List接口,提供动态调整大小的功能。虽然比标准数组慢一点,但ArrayList提供了许多标准数组中找不到的功能。

如何在 Java 中创建 ArrayList

要创建ArrayList,请务必先导入java.util.ArrayList包。然后,您需要做的就是调用它的构造函数:

import java.util.ArrayList; 

ArrayList<String> guitars = new ArrayList<String>();

ArrayList支持泛型,这有助于增强类型安全性。程序员可以创建任何类型的ArrayList,从简单类型(如IntegerStringDouble )到复杂类型(如HashMap或任何用户定义的对象)。

在 Java 中添加和删除 ArrayList 中的项目

您可以使用**add(obj)**方法向 ArrayList添加值,该方法会将对象添加到列表的末尾。同时,**add(index,obj)**方法在传递的索引处添加对象,但首先将任何现有值移动到更高的索引,以便为新对象腾出空间。请注意,与常规数组一样,索引是从零开始的

您还可以使用remove(index)ArrayList中删除值,这会从列表中删除给定索引处的项目。这会将基础数组中的所有其他项目移动一个序数位置,并将ArrayList的大小减少1 。

以下程序通过向新的ArrayList添加一些吉他(包括位于特定索引处的吉他)来展示添加删除方法。然后删除列表中的第一项:

import java.util.ArrayList; 

ArrayList<String> guitars = new ArrayList<String>();

guitars.add("Fender");
guitars.add("Gibson");
guitars.add("Jackson");
System.out.println(guitars);

// 在第二个位置插入新项目
guitars.add(1, "Washburn");
System.out.println(guitars);

// 删除第一个元素
guitars.remove(0);
System.out.println(guitars);

我们可以在下面看到完整的程序输出:

Java 中的数组列表

Java ArrayList 的获取和设置方法

一旦您在ArrayList中获得了一些项目,开发人员就会想要访问它们以读取修改它们的值。与数组使用的方括号( array[index] )相反, ArrayList通过方法提供对底层数组的访问。您可以使用 来获取索引处的对象obj = listName.get(index),并使用 来设置索引处的对象listName.set(index,obj)。下面是一个基于前一个示例的 Java 代码示例:

// 打印列表的第三个元素
System.out.println(guitars.get(2));

guitars.set(2, "Yamaha");
// Jackson现在是Yamaha
System.out.println(guitars);

以下是更新后的程序输出,其中两个新的系统输出以红色突出显示:

Java get 和 set 方法教程

如何在 Java 中获取 ArrayList 的大小

与具有 length 属性的数组不同,ArrayList提供size()方法来获取ArrayList中的项目数。因此,我们可以通过调用ArrayListsize()方法来获取吉他的长度:

guitars.set(2, "Yamaha");
// Jackson is now Yamaha
System.out.println(guitars);

// Prints 3
System.out.println(guitars.size());

在 Java 中对 ArrayList 进行排序

出于显示目的, ArrayList通常需要进行排序,这可以使用**Collections.sort()ArrayList.sort()**方法轻松完成。

Collections.sort ()方法用于按升序对指定列表的元素进行排序。它与Arrays.sort()方法非常相似,但更通用,因为它可以对数组以及链表、队列和许多其他扩展Collections的类型(包括ArrayList)的元素进行排序。

请记住,**Collections.sort()**会改变原始列表,因此您需要在访问排序列表之前在其自己的行上调用它,如下例所示:

Java Collection.sort方法

ArrayList进行排序的另一种方法是使用其自己的实例排序方法。它与Collections.sort()有所不同,因为ArrayList sort()方法接受比较器方法作为参数(对于Collections.sort()来说它是可选的)。比较器指定ArrayList的排序顺序,对于对自定义对象进行排序特别有用。话虽这么说,比较器对于字符串整数等简单类型同样有效:

import java.util.ArrayList;
import java.util.Comparator;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> guitars = new ArrayList<>();
    guitars.add("Gibson");
    guitars.add("Yamaha");
    guitars.add("Fender");
    guitars.add("Jackson");
    
    System.out.println("guitars before sorting: " + guitars);
    
    // 使用比较器对ArrayList进行排序
    guitars.sort(new Comparator<String>() {
      @Override
      public int compare(String guitar1, String guitar2) {
        return guitar1.compareTo(guitar2);
      }
    });
    
    // 上面的sort()方法也可以使用lambda表达式编写
    guitars.sort((guitar1, guitar2) -> guitar1.compareTo(guitar2));
    
    // 一个更简洁的解决方案!
    guitars.sort(Comparator.naturalOrder());
    
    System.out.println("guitars after sorting: " + guitars);
  }
}

对于这种直接排序来说,使用比较器函数可能有点过分了,但是,正如结果所示,它确实有效:

Java ArrayList排序方法

END

虽然普通数组非常适合保存固定数量的相同类型的值,但如果您需要动态调整大小或认为您可能会从其许多有用的方法中受益,请考虑升级到 ArrayList 。

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

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

相关文章

SpringSecurity-尚硅谷

前置知识 掌握Spring框架掌握SpringBoot使用掌握JavaWEB技术 文章目录 前置知识1. 简介1.1 概要1.2 历史 2.入门案例2.1 创建一个项目2.1.1 pom.xml2.1.2 controller层 2.2 运行这个项目2.32.4 SpringSecurity 基本原理2.5 UserDetailsService 接口讲解2.6 PasswordEncoder 接…

AI黑客松近期比赛清单;36氪AI淘宝店盈利复盘;GitHub Copilot官方最佳实践;AI在HR领域的应用探索 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; ⋙ 点击查看 AI Hackathon (黑客马拉松) 汇总清单 &#x1f916; 〖飞桨〗2023大模型应用创新挑战赛 百度飞桨联合上海市青年五十人创新创业研究院等…

【软件测试】推荐几款适合练手的项目

最近收到许多自学自动化测试的小伙伴私信&#xff0c;学习了理论知识后&#xff0c;却没有合适的练手项目。 测试本身是一个技术岗位&#xff0c;如果只知道理论&#xff0c;没有实战经验&#xff0c;在面试中很难说服面试官&#xff0c;比如什么场景下需要添加显示等待&#x…

CentOs7 安装jdk8详细教程

方法一&#xff1a;gz安装包安装&#xff08;推荐&#xff09; 1.下载所需版本的.tar.gz安装包 Oracle官网即可下载&#xff0c;选择好对应版本&#xff0c;可以先下到主机&#xff0c;然后上传到虚拟机的Linux上。&#xff08;注意&#xff1a;Oracle现在下载jdk需要注册登录…

OAuth2.0与单点登录的区别

本文说下OAuth2.0与单点登录的区别 文章目录 概述什么是单点登录单点登录和Oauth2.0的区别单点登录的实现本文小结 概述 SSO是Single Sign On的缩写&#xff0c;OAuth是Open Authority的缩写&#xff0c;这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相…

解决联网时自动打开浏览器转到必应msn网址的问题

现象 开机后或者断网重连之后&#xff0c;系统自动打开默认浏览器&#xff08;不管是IE还是谷歌&#xff0c;或其他的浏览器&#xff09;网址为http://go.microsoft.com/fwlink/?LinkID219472&clcid0x409接着转到http://cn.bing.com/ 或者 https://www.msn.com/ 解决方法…

Kafka系列 - kafka 副本|AR|ISR|OSR|Leader|Follower|HW|LEO

文章目录 01. kafka 副本信息02. kafka 中 ISR、AR和OSR代表什么&#xff1f;03. kafka 中 ISR的伸缩指什么&#xff1f;04. 什么情况下一个broker会从ISR中踢出去&#xff1f;05. kafka 副本和ISR扮演什么角色&#xff1f;06. kafka 副本长时间不在ISR中&#xff0c;意味着什么…

buuctf re(二)+ web CheckIn

目录 re xor helloword reverse3 web SUCTF 2019 CheckIn xor 1.查壳 64位&#xff0c;无壳 2.ida&#xff0c;f5查看伪代码 3.跟进global dq是八个字节&#xff0c;汇编数据类型参考汇编语言---基本数据类型_汇编db类型_wwb0111的博客-CSDN博客 4.因为global变量里有一…

多商户商城有哪些功能和优势?-加速度jsudo

电商时代下&#xff0c;传统企业商家急需拓展业务规模&#xff0c;向线上拓展&#xff0c;而多商户小程序造价低&#xff0c;效应高&#xff0c;自然就成为了很多企业商家拓展线上营销渠道的首要选择,那么多商户小程序商城涵盖哪些功能呢?下面小编就来详细为大家解答&#xff…

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

文章目录 1. 什么是Assembly2. PCG部分2.1 Assembly变换2.2 Point变换2.2.1. SG_CopyPointsWithHierachy2.2.2 过滤及点变换2.2.3. ApplyHierachy 3. 小结 1. 什么是Assembly UE5.2的PCG出了有一段时间了&#xff0c;大家玩得都很开心。很多朋友可能和老王一样&#xff0c;使用…

Rust语言从入门到入坑——(10)文件与IO

文章目录 0、引入1、命令行1.1 命令行参数1.2 命令行输入 2、文件操作2.1 读取文件2.2 写入文件 3、总结 0、引入 Rust 语言的 I/O 操作&#xff0c;最基本的交互模式&#xff0c;主流语言都具备的功能。 1、命令行 1.1 命令行参数 命令行程序是计算机程序最基础的存在形式&…

B050-cms05-轮播图 cookie session 登录

目录 轮播图修改操作删除操作查询并展示所有轮播图 无状态的HTTP协议CookieCookie的原理Cookie的创建获取Cookie更新Cookie设置cookie的声明周期设置cookie访问路径Cookie优缺点 SessionSession原理创建SessionSession的使用sesion的生命周期Session的优缺点Cookie和Session的区…

定积分计算—牛顿-莱布尼兹公式、定积分的几何意义、利用奇偶性化简、利用Wallis公式

定积分计算 前言定积分的常规计算技巧—牛顿-莱布尼茨公式定积分的几何意义利用奇偶性简化计算![在这里插入图片描述](https://img-blog.csdnimg.cn/9acfec48362141ba9486630f7060d78d.jpg)利用周期性平移和缩小积分区间利用Wallis公式利用一个常见的积分公式定积分计算练习题 …

yolov8 -01 部署

本想去配环境的步骤&#xff0c;在之前yolov5运行的环境下&#xff0c;试predict yolov8&#xff0c;竟然报错。 与其改bug, 选择重头来。 1. conda 创建新环境 yolo 8 conda create -n yolo82. 官网下载资料 官网下载yolo8相关资料 https://github.com/ultralytics/ultraly…

Flutter 检查连接网络 connectivity_plus

Flutter 检查连接网络 connectivity_plus 前言 有些对通讯敏感的程序&#xff0c;我们需要检查当前连接的网络情况。 我推荐使用 connectivity_plus https://pub-web.flutter-io.cn/packages/connectivity_plus 这个插件的好处就是支持全平台&#xff0c;这点非常好。 我们今天…

socketio连接失败,nginx返回502 connect() failed (111: Connection refused)

现象 我们信控平台&#xff0c;需要实时展示信号灯灯态&#xff08;红黄绿、倒计时等&#xff09; 当灯态变化时&#xff0c;前端信号机设备会通过socket协议将消息推送给我们的通信服务&#xff0c;通信服务将消息解析处理后&#xff0c;关联路口信息&#xff0c;再把信息通过…

数据库监控与调优【四】—— EXPLAIN详解

EXPLAIN详解&#xff08;使用、可视化、扩展与性能计算公式&#xff09; TIPS 本文基于MySQL 8.0编写&#xff0c;理论支持MySQL 5.0及更高版本。 什么是EXPLAIN命令 EXPLAIN命令是查看MySQL查询优化器如何执行查询的主要方法&#xff0c;可以很好地分析SQL语句的执行情况。每…

MPLS新手排查丢包问题

借助查问题又重新复习了一下mpls协议&#xff0c;首先复习一下它的报文格式&#xff1a; 0---------------19-------22---23------------31 | Label value | Exp | Bos | TTL | -----------------|---------|-------|-------------| 字段意义&#xff1a; Label v…

全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】

文章目录 1. 文章引言2. 下载Axure103. 安装Axure104. Axure10中文5. 解决axure弹框更新的问题6. 重要备注7. Axure10授权 1. 文章引言 最近在学习原型图&#xff0c;针对画原型图的工具&#xff0c;反复对比墨刀、Axure、xiaopiu后&#xff0c;最终选择了Axure。 接下来&…

ansible自动化IT工具安装部署与使用验证

目录 一、环境配置 1、关闭防火墙 2、免密登录配置 3、同步时区 二、服务端配置 1、安装软件 2、查看版本 3、实现远程控制huyang3 4、测试 结果验证&#xff1a; 一、环境配置 1、关闭防火墙 systemctl stop firewalld iptables -F setenforce0 2、免密登录配置 【huy…