【从零开始学习JAVA | 第十一篇】ArrayList集合

news2024/9/21 18:57:26

目录

前言: 

ArrayList: 

常用成员方法:

案例练习:

1.集合的遍历方式(引用数据类型):

2:集合的遍历方式(基本数据类型):

总结: 


前言: 

本章节我们将介绍一个在JAVA中应用广泛的类:ArrayList集合,这个类的重量级堪比C++中的vector类,也就是说大家在以后如果要用java,就不可避免的会大量使用这个类,因此我们要认真起来,熟练的掌握这个类的应用。

ArrayList: 

ArrayList Java Collections Framework 中的一个类,它提供了可调整大小的数组实现,实现了 List 接口。

它与普通数组非常相似,但它的大小是可调整的。它可以根据需要自动增大或缩小。

ArrayList 可以存储任何类型的对象,例如字符串、整数、对象等。存储在 ArrayList 中的元素可以通过索引进行访问,称为元素编号,编号从 0 开始。

ArrayList 利用其内部数组实现了许多常见的方法,例如添加元素,删除元素和遍历元素。此外,ArrayList 还提供了一些方法,例如排序和搜索,以使其更易于使用。

ArrayList是不可以直接存储基本数据类型的,只能存储引用数据类型

使用前提:

需要导入包:

import java.util.ArrayList;

在创建一个ArryList类的时候,我们应该指定好存储的数据类型:

ArrayList<类型> list = new ArrayList<类型>();

常用成员方法:

1. add():向 ArrayList 中添加元素。

ArrayList<String> list = new ArrayList<String>();
list.add("John");

2. get():获取 ArrayList 中指定索引位置的元素。

String name = list.get(0);

3. set():设置 ArrayList 中指定索引位置的元素值。

list.set(0, "Tom");

4. remove():删除 ArrayList 中指定索引位置或指定元素的元素。

list.remove(0);
list.remove("Alice");

5. size():获取 ArrayList 的大小。

int size = list.size();

6. clear():清空 ArrayList。

list.clear();

7. indexOf():查找 ArrayList 中指定元素的第一个索引位置。

int index = list.indexOf("Bob");

8. contains():检查 ArrayList 中是否包含指定元素。

boolean isContain = list.contains("John");

9. toArray():将 ArrayList 转化为数组并返回。

String[] array = list.toArray(new String[list.size()]);

这些方法只是其中一部分,ArrayList 还有许多其他有用的方法。如果有其他的需求,建议查阅相关文档或教程。

案例练习:

1.集合的遍历方式(引用数据类型):

需求:定义一个集合,添加字符串,并进行遍历

遍历格式:元素1, 元素2,元素3.

import java.util.ArrayList;

public class test09 {
    public static void main(String[] args) {
        //1.创建集合
        ArrayList<String> list = new ArrayList<String>();

        //添加元素
        list.add("aaa");
        list.add("ddd");
        list.add("ccc");
        list.add("eee");

        //进行遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+",");
        }
    }
}

2:集合的遍历方式(基本数据类型):

需求:定义一个集合,添加字数字,并进行遍历

遍历格式:元素1, 元素2,元素3.

这道题的问题就在于:已知集合是不可以存基本储数据类型的,那么我们如何让ArrayList这个集合存储基本数据类型呢?
答案是将基本数据类型转化为他所对应的包装类:

- byte 对应 Byte
- short 对应 Short
- int 对应 Integer
- long 对应 Long
- float 对应 Float
- double 对应 Double
- char 对应 Character
- boolean 对应 Boolean

包装类可以将基本数据类型封装成对象,在进行一些特殊操作时非常有用。例如,使用Integer包装类可以将int类型的值转换为二进制、八进制、十六进制等不同进制的字符串。同时,包装类还提供了许多其他的方法,例如比较两个数的大小、将字符串转换为数字等。

import java.util.ArrayList;

public class test09 {
    public static void main(String[] args) {
        //1.创建集合
        ArrayList<Integer> list = new ArrayList<Integer>();

        //添加元素
        list.add(1);
        list.add(2);
        list.add(3);


        //进行遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+",");
        }
    }
}

 案例3:创建一个学生类,以这个学生类作为存储的基本元素,创建一个ArrayList集合。

需求:学生类的属性为:姓名,年龄。

import java.util.ArrayList;
import java.util.Scanner;


public class test10 {
    public static void main(String[] args) {
        //1.创建集合:
        ArrayList<student>  list= new ArrayList<student>();
        //2.录入数据:
         Scanner sc= new Scanner(System.in);
        for (int i = 0; i < 3; i++) {

            String name =sc.next();
            int age =sc.nextInt();
            student d1 = new student();
            d1.setName(name);
            d1.setAge(age);
            list.add(d1);
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println("姓名:"+ list.get(i).getName()+"年龄:"+list.get(i).getAge());
        }

    }
}

总结: 

Arraylist是一个很实用的类,它提供了一个不会越界的数组,极大效率的提高了我们对于数据的处理效果,因此我们要熟练的掌握它,才可以制胜JAVA。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

一面、二面、三面有什么区别?

很多公司面试都分一面、二面、三面甚至更多&#xff0c;大家可能会好奇&#xff0c;为什么要面这么多面&#xff0c;每一面又有啥区别呢&#xff1f; 首先我来回答下为什么要这么多面&#xff0c;最核心的是最后3点&#xff1a; 如果光是一个人面&#xff0c;担心会看走眼&…

python基础学习6【DatatimeIndex与PeriodIndex函数+Timedelta类+连接数据库+agg()函数和aggregate()函数】

转换与处理时间序列数据 转换字符串时间为标准时间: Timestamp类型&#xff1a;最基础最常用。 pd.to_datetime(data[lock_time])#转换 如果超出时间戳最大值&#xff0c;最小值&#xff0c;时间戳存储可能不成功 &#xff1a; DatatimeIndex与PeriodIndex函数【其实俺暂时…

【Spring Cloud Sleuth 分布式链路跟踪】 —— 每天一点小知识

&#x1f4a7; S p r i n g C l o u d S l e u t h 分布式链路跟踪 \color{#FF1493}{Spring Cloud Sleuth 分布式链路跟踪} SpringCloudSleuth分布式链路跟踪&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云…

scratch lenet(9): C语言实现tanh的计算

文章目录 1. 目的2. tanh ⁡ ( x ) \tanh(x) tanh(x) 的 naive 实现2.1 数学公式2.2 naive 实现 3. tanh ⁡ ( x ) \tanh(x) tanh(x) 的快速计算3.1 Maple 中的近似公式3.2 tan_c3()3.3 Gauss 连分数公式 (Continued Fraction) 4. 最终代码和运行结果代码运行结果 5. 其他Ref…

使用python制作常用图表

案例01 制作柱形图展示数据的对比关系——员工销售业绩统计表.xlsx import xlwings as xw app xw.App(visibleTrue, add_bookFalse) workbook app.books.open(员工销售业绩统计表.xlsx) # 打开要制作图表的工作簿 for i in workbook.sheets: # 遍历工作簿中的工作表chart i…

node.js安装及配置教程(win11)

node.js安装及配置教程&#xff08;win11&#xff09; 一、下载二、安装三、环境配置 一、下载 官网下载&#xff1a;点击下载 根据自己电脑的位数选择对应的版本即可 网盘下载&#xff1a;点击下载 二、安装 下载完成后&#xff0c;双击运行程序&#xff0c;点击next 勾…

iOS自动化环境搭建(超详细)

1.macOS相关库安装 libimobiledevice > brew install libimobiledevice 使用本机与苹果iOS设备的服务进行通信的库。 ideviceinstaller brew install ideviceinstaller 获取设备udid、安装app、卸载app、获取bundleid carthage > brew install carthage 第三方库…

【Redis】Redis最佳实践/经验总结

【Redis】Redis最佳实践/经验总结 文章目录 【Redis】Redis最佳实践/经验总结1. Redis键值设计1.1 优雅的key结构1.2 拒绝BigKey1.2.1 BigKey的危害1.2.2 如何发现BigKey1.2.3 如何删除BigKey 1.3 恰当的数据类型1.3.1 例11.3.2 例2 2. 批处理优化2.1 Pipeline2.1.1 单个命令的…

ROM和RAM的工作原理(DRAM和DROM)以及DRAM的刷新方法

只读存储器ROM: ROM和RAM都是支持随机存取的存储器&#xff0c;其中SRAM和DRAM均为易失性半导体存储器。而ROM中一旦有了信息&#xff0c;就不能轻易改变&#xff0c;即使掉电也不会丢失&#xff0c;它在计算机系统中是只供读出的存储器。ROM器件有两个显著的优点: 1)结构简单&…

RabbitMQ 消息丢失的场景,如何保证消息不丢失?

一.RabbitMQ消息丢失的三种情况 第一种&#xff1a;生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候&#xff0c;可能数据就在半路给搞丢了&#xff0c;因为网络问题啥的&#xff0c;都有可能。 第二种&#xff1a;RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了 第三种…

软考A计划-系统集成项目管理工程师--一般常识-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【深度学习推荐系统 理论篇】一、Wide Deep Learning for Recommender Systems

前言 在搜广推业务做了3年工程&#xff0c;最近终于有空整理下&#xff0c;完整的梳理下自己的知识架构&#xff08;预计分为理论篇/工程篇&#xff09; Wide & Deep论文链接&#xff1a;https://arxiv.org/abs/1606.07792 另外王喆老师《深度学习推荐系统》中&#xff…

安装 Nginx 服务

一.安装 Nginx 服务 1.关闭防火墙 开机自启起 安全机制 systemctl stop firewalld systemctl disable firewalld setenforce 0 2、安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 3、创建运行用户 useradd -M -s /sbin/nologin nginx 4、编译安装 cd …

总结908

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日必复习&#xff08;5分钟&#xff09;…

永磁同步直线电机学习笔记——直线电机的数学模型

永磁直线电机数学模型的建立&#xff0c;是进行后续控制仿真和实验的前提。为了实现永磁同步直线电机的矢量控制&#xff0c;需要把永磁同步直线电机假想成永磁同步旋转电机&#xff0c;借鉴旋转电机的电流分析方式&#xff0c;实现dq轴电流控制的解耦&#xff0c;并且把永磁同…

为什么常见电路板GND与外壳GND之间接一个电阻一个电容

集电极开路是指集电极电路中出现了断路的情况&#xff0c;导致电路无法正常工作。在集电极开路的情况下&#xff0c;电路中的电流无法通过集电极流过&#xff0c;导致电路无法正常放大信号或者控制其他器件的工作。 集电极开路的原因有很多&#xff0c;可能是器件本身的故障、…

C++进阶—继承(下)菱形(虚拟)继承分析虚拟继承存储对象模型

目录 0. 前言 1. 普通多继承下&#xff0c;基类和派生类复制转换底层细节(切片) 2. 多继承下的复杂菱形继承 3. 菱形虚拟继承(虚基类)重点 3.1 菱形非虚拟继承对象存储模型 3.2 菱形虚拟继承对象存储模型 3.3 虚拟继承对象存储模型 3.4 多对象继承关系分析其虚基类&…

Redis原理 - 内存策略

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis 本身是一个典型的 key-value 内存存储数据库&#xff0c;因此所有的 key、value 都保存在之前学习过的 Dict 结构中。不过在其 database 结构体中&#xff0c;有两个 Dict &#xff1a;一个用来记录 key-value&#xf…

【计算机网络详解】——软件定义网络SDN(学习笔记)

目录 &#x1f552; 1. 概念&#x1f552; 2. OpenFlow 协议 &#x1f552; 1. 概念 软件定义网络&#xff08;Software Defined Network&#xff0c;SDN&#xff09;的概念最早由斯坦福大学的Nick McKeown教授于2009年提出。SDN最初只是学术界讨论的一种新型网络体系结构。SD…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA&#xff0c;这几天跟着网上的视频学完基础知识之后&#xff0c;做了一个学生信息管理系统&#xff0c;写的比较普通&#xff0c;没太大亮点&#xff0c;希望可以给初学者一些参考经验&#xff0c;另外&#xff0c;如有不恰当的地方还请各位指正&am…