Java集合ArrayList-学习笔记

news2024/12/26 0:50:39

目录

ArrayList

集合和数组的优势对比:

1.1 ArrayList类概述

1.2 ArrayList类常用方法

1.3 ArrayList存储字符串并遍历

1.4 ArrayList存储学生对象并遍历

1.5 查找用户的索引

1.6 判断用户的是否存在


ArrayList

集合和数组的优势对比:

  1. 集合长度可变

  2. 添加数据的时候不需要考虑索引,默认将数据添加到末尾

  3. 数组可以存基本数据类型也可以存引用数据类型 集合可以存引用数据类型;但基本数据类型不可,要封装成--包装类

    基本数据类型对应的包装类

  4.  

1.1 ArrayList类概述

  • 什么是集合

    提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

  • ArrayList集合的特点

    长度可以变化,只能存储引用数据类型。

  • 泛型的使用

    用于约束集合中存储元素的数据类型

1.2 ArrayList类常用方法

1.2.1 构造方法

方法名说明
public ArrayList()创建一个空的集合对象

1.2.2 成员方法

方法名说明
public boolean add(要添加的元素)将指定的元素追加到此集合的末尾
public boolean remove(要删除的元素)删除指定元素,返回值表示是否删除成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数

1.2.3 示例代码

public class ArrayListDemo02 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> array = new ArrayList<String>();
        // ArrayList<String> array = new ArrayList<>();也可
​
        //添加元素
        array.add("hello");
        array.add("world");
        array.add("java");
​
        //public boolean remove(Object o):删除指定的元素,返回删除是否成功
        //        System.out.println(array.remove("world"));
        //        System.out.println(array.remove("javaee"));
​
        //public E remove(int index):删除指定索引处的元素,返回被删除的元素
        //        System.out.println(array.remove(1));
​
        //IndexOutOfBoundsException
        //        System.out.println(array.remove(3));
​
        //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
        //        System.out.println(array.set(1,"javaee"));
​
        //IndexOutOfBoundsException
        //        System.out.println(array.set(3,"javaee"));
​
        //public E get(int index):返回指定索引处的元素
        //        System.out.println(array.get(0));
        //        System.out.println(array.get(1));
        //        System.out.println(array.get(2));
        //System.out.println(array.get(3)); //?????? 自己测试
​
        //public int size():返回集合中的元素的个数
        System.out.println(array.size());
​
        //输出集合
        System.out.println("array:" + array);
    }
}

1.3 ArrayList存储字符串并遍历

1.3.1 案例需求

创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合

1.3.2 代码实现

public class ArrayListDemo3 {
    public static void main(String[] args) {
        //1.创建集合对象
        ArrayList<String> list = new ArrayList<>();
​
        //2.添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
​
        //3.遍历
        //快捷键: list.fori 正向遍历
        //list.forr 倒着遍历
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            //i 依次表示集合里面的每一个索引
​
            if(i == list.size() - 1){
                //最大索引
                System.out.print(list.get(i));
            }else{
                //非最大索引
                System.out.print(list.get(i) + ", ");
            }
        }
        System.out.print("]");
    }
}
 

1.4 ArrayList存储学生对象并遍历

1.4.1 案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

1.4.2 代码实现

public class ArrayListDemo4 {
    public static void main(String[] args) {
        //1.创建集合对象,用来存储数据
        ArrayList<Student> list = new ArrayList<>();
​
        //2.创建学生对象
        Student s1 = new Student("zhangsan",16);
        Student s2 = new Student("lisi",15);
        Student s3 = new Student("wangwu",18);
​
        //3.把学生对象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
​
        //4.遍历
        for (int i = 0; i < list.size(); i++) {
            //i 依次表示集合中的每一个索引
            Student stu = list.get(i);
            System.out.println(stu.getName() + ", " + stu.getAge());
        }
    }
}
​

1.5 查找用户的索引

需求:

1,main方法中定义一个集合,存入三个用户对象。

用户属性为:id,username,password

2,要求:定义一个方法,根据id查找对应的学生信息。

如果存在,返回索引

如果不存在,返回-1

代码示例:

public class ArrayListDemo6 {
    public static void main(String[] args) {
        /*需求:
        1,main方法中定义一个集合,存入三个用户对象。
        用户属性为:id,username,password
        2,要求:定义一个方法,根据id查找对应的学生信息。
        如果存在,返回索引
        如果不存在,返回-1*/
​
​
        //1.创建集合对象
        ArrayList<User> list = new ArrayList<>();
​
        //2.创建用户对象
        User u1 = new User("heima001", "zhangsan", "123456");
        User u2 = new User("heima002", "lisi", "1234");
        User u3 = new User("heima003", "wangwu", "1234qwer");
​
        //3.把用户对象添加到集合当中
        list.add(u1);
        list.add(u2);
        list.add(u3);
​
        //4.调用方法,通过id获取对应的索引
        int index = getIndex(list, "heima001");
​
        System.out.println(index);
​
    }
​
​
    //1.我要干嘛?  根据id查找对应的学生信息
    //2.我干这件事情需要什么才能完成?   集合 id
    //3.方法的调用处是否需要继续使用方法的结果?
    //要用必须返回,不要用可以返回也可以不返回
    //明确说明需要有返回值 int
    public static int getIndex(ArrayList<User> list, String id) {
        //遍历集合得到每一个元素
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getId();
            if(uid.equals(id)){
                return i;
            }
        }
        //因为只有当集合里面所有的元素都比较完了,才能断定id是不存在的。
        return -1;
    }
}
​

1.6 判断用户的是否存在

public class ArrayListDemo5 {
    public static void main(String[] args) {
       /* 需求:
        1,main方法中定义一个集合,存入三个用户对象。
        用户属性为:id,username,password
        2,要求:定义一个方法,根据id查找对应的学生信息。
        如果存在,返回true
        如果不存在,返回false*/
​
        //1.定义集合
        ArrayList<User> list = new ArrayList<>();
​
        //2.创建对象
        User u1 = new User("heima001","zhangsan","123456");
        User u2 = new User("heima002","lisi","12345678");
        User u3 = new User("heima003","wangwu","1234qwer");
​
        //3.把用户对象添加到集合当中
        list.add(u1);
        list.add(u2);
        list.add(u3);
​
        //4.调用方法,查询id是否存在
        boolean result = contains(list, "heima001");
        System.out.println(result);
​
    }
​
    //定义在测试类中的方法需要加static
    //1.我要干嘛? 我要根据id查询学生是否存在
    //2.我干这件事情,需要什么才能完成? 集合 id
    //3.方法的调用处是否需要使用方法的结果?
    //如果要用,必须返回,如果不用,可以返回也可以不返回
    //但是本题明确说明需要返回
    public static boolean contains(ArrayList<User> list, String id){
        //循环遍历集合,得到集合里面的每一个元素
        //再进行判断
​
        for (int i = 0; i < list.size(); i++) {
            //i 索引  list.get(i); 元素
            User u = list.get(i);
            //判断id是否存在,我是拿着谁跟谁比较
            //需要把用户对象里面的id拿出来再进行比较。
            String uid = u.getId();
            if(id.equals(uid)){
                return true;//return 关键字:作用就是结束方法。
            }
        }
        //只有当集合里面所有的元素全部比较完毕才能认为是不存在的。
        return false;
    }
​
}
​

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

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

相关文章

Ardupilot EKF3核心算法《状态量速度与位置预测方程》

目录 文章目录 目录摘要1. Ardupilot EKF3核心算法《状态量速度预测方程》2. Ardupilot EKF3核心算法《状态量位置预测方程》3. Ardupilot EKF3核心算法《状态量速度与位置预测方程》摘要 本节主要记录Ardupilot EKF3核心算法《状态量速度与位置预测方程》的过程,欢迎批评指正…

mysql生产数据库被误删

23年的头一天上班安装数据库&#xff0c;因为ssh工具来回切换失误&#xff0c;犯下不可饶恕的错误&#xff0c;居然将生产数据库全部删除&#xff0c;工作十几年头一次干这种蠢事&#xff0c;第一时间反应是一世英名毁于一旦&#xff0c;赶紧跑路。第二反应还是想办法看能否挽回…

aws eks 使用 cloudformation 创建并更新自管节点组

参考资料 更新现有自行管理的节点组 使用eks自管节点组能够最大程度控制节点的各项配置和参数&#xff0c;包括并不限于ami&#xff0c;节点类型等 但是使用自管节点也给用户带来了较大的维护和更新成本。对于节点组的更新操作&#xff0c;我们可以使用cloudformation的方式…

速览Visual Studio 2022 中的新增功能

目录 性能改进 Visual Studio 2022 为 64 位 在文件中更快地查找 Git 工具速度更快 生成新式应用 适用于 C、.NET 和热重载的更佳开发工具 Blazor & 的汇报ASP.NET 的 Razor 编辑器 热重载 创新触手可及 Git 多存储库支持和行暂存支持 IntelliCode 改进 为每个…

魔方(15)二、三、四、五阶棋盘魔方

棋盘魔方 这价格实在可恶&#xff0c;于是我拿现成的魔方自己贴贴纸。 二阶棋盘魔方A 有4个角块是3面黑&#xff0c;4个角块是3面白&#xff0c;而6个面都是棋盘色。 只需要2步就可以转化成&#xff1a; 所以任意状态只要转化成这个状态再加2步就能复原了。 二阶棋盘魔方B&a…

【C++函数对象】STL基础语法学习 | 仿函数谓词内建仿函数

目录 ●仿函数 1.概念 2.使用 ●谓词 1.一元谓词 2.二元谓词 ●内建仿函数 1.算数仿函数 2.关系仿函数 3.逻辑仿函数 ●仿函数 1.概念 重载函数调用操作符的类&#xff0c;其对象常称为函数对象。函数对象使用重载的()时&#xff0c;行为类似函数的调用&#xff0c;所…

技术更高,设计更远:华为全屋智能设计大赛的审美之跃

“人生到处知何以&#xff1f;应似飞鸿踏雪泥。泥上偶然留指爪&#xff0c;鸿飞那复计东西。”很多设计师朋友跟我说&#xff0c;苏轼这首《和子由渑池怀旧》是对设计与审美的最高理解。好的设计&#xff0c;应该仅仅留下一点点痕迹&#xff0c;同时在简约的表象下隐含大量的审…

高通平台开发系列讲解(USB篇)USB调试手段汇总说明 - 视频课

文章目录 一、USB AT数据流说明二、BUS Hound 工具说明三、sysfs相关USB调试节点四、USB usbmon工具使用五、USB usbmon日志解析六、UsbTreeView软件的使用七、视频讲解分享沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 碰见USB AT不通怎么办?所以本篇章汇总了高通…

Vue与React中父子组件生命周期的执行顺序?【生命周期详细知识讲解!!!】

文章目录一、 Vue中父子组件生命周期1-1 加载渲染过程1-2 销毁过程1-3 展示案例二、 React中父子组件生命周期2-1 关于React新旧版生命周期介绍2-2 父子组件生命周期2-2-1 父子组件初始化2-2-2 子组件修改自身state2-2-3 父组件修改props2-2-4 卸载子组件一、 Vue中父子组件生命…

卷绕剩余长度计算FC(收放卷应用)

卷径实时计算方法详细内容请参看下面的文章链接: 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下:变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环…

【EHub_tx1_tx2_E100】Ubuntu18.04 + ROS_ Melodic + LingAo IMU 测试及RVIZ展示

简介&#xff1a;介绍LingAo 的6自由度IMU模块 在EHub_tx1_tx2_E100载板&#xff0c;TX1核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开使用RVIZ 查看IMU数据&#xff0c;本文的前提条件是你的TX1里已经安装了ROS版本&#xff1a;Melodic。 关…

Spring Boot+Mybatis+layui框架实现的前后端分离的医院药品管理系统源码+数据库

springboot layui药品管理系统 介绍 前后端分离的药品管理系统。 完整代码下载地址&#xff1a;Spring BootMybatislayui框架实现的前后端分离的医院药品管理系统源码数据库 软件架构 前端&#xff1a;layui框架 后端&#xff1a;Spring BootMybatis 数据库&#xff1a;…

静态库和动态库

&#xff08;1&#xff09;什么是库 &#xff08;2&#xff09;静态库的制作 汇编 生成对应的.o文件&#xff08;命令&#xff1a;gcc -c add.c div.c mult.c sub.c&#xff09;创建静态库&#xff08;命令&#xff1a;ar rcs libcalc.a add.o div.o mult.o sub.o&#xff09;…

数据结构-栈和队列

目录&#x1f921;前言&#x1f44d;栈&#x1f620;栈的概念及结构&#x1f620;栈的实现&#x1f44d;队列&#x1f620;队列的概念及结构&#x1f620;队列的实现&#x1f4a1;总结&#x1f921;前言 本篇博客主要记录的是栈和队列的学习和总结。 &#x1f44d;栈 &#…

虹科分享 | 如何解决CAN与以太网之间的信息有效传递与智能变送难题?

背景 在工业中&#xff0c;一般把现场总线应用于车间、生产现场等生产第一线&#xff0c;作为控制网络&#xff0c;而以太网主要应用于企业管理层和生产监控层。由于不同现场总线之间没有统一标准、难以接入因特网等缺点&#xff0c;使得目前大部分企业控制网络与信息网络相互…

猎聘和BOSS直聘谁会成为在线招聘的最后赢家?

文|螳螂观察 作者|易不二 在线招聘行业正在焕发新的巨大活力。 12月22日&#xff0c;BOSS直聘正式在港交所主板完成双重主要上市。BOSS直聘创始人赵鹏扬言&#xff0c;公司未来三年内有一个获取一亿用户的“小目标”&#xff0c;纯蓝领市场是公司完成这一目标的重要增长动力…

移位操作符和位操作符(从概念到相关算法题详解)

目录 概念 基础知识 左移操作符(<<) 右移操作符(>>) 按位与(&) 按位或(|) 异或(^) 相关算法题 1.不能创建临时变量(第三个变量),实现俩个数的交换 方法1: 方法2: 写一个方法,返回参数中二进制中1的个数 方法1: 方法2: 方法3: 俩个int(32位)整…

2019年数维杯国际大学生数学建模C题猪肉价格波动分析求解全过程文档及程序

2019年数维杯国际大学生数学建模 C题 猪肉价格波动分析 问题重述&#xff1a; 中国是一个育种大国。猪肉产业在畜牧业中起着主导作用。同时&#xff0c;猪肉已成为人们餐桌上的主要肉类来源之一。随着人口的增加&#xff0c;消费和生活也得到了改善。 2018年8月3日&#xff0…

Android Studio中设置Compose 代码模版

File Templates 有两种方式能找到编辑File Templates的入口 在 File -> New -> Edit File Templates 或者 在项目结构目录中点击右键菜单 New -> Edit File Templates 在设置界面中的 Editor -> File and Code Templates #if (${PACKAGE_NAME} && ${…

dwg怎么转成dxf格式?手机也能轻松操作

dwg怎么转成dxf格式呢&#xff1f;相信很多小伙伴应该知道这两种格式都是CAD图纸中的一种&#xff0c;那么它们有什么区别呢&#xff1f;第一&#xff0c;性质不同dwg图形文件是计算机辅助设计软件AutoCAD用来保存设计数据的专有文件格式。dxf图形文件是DWG格式的ASCII格式变体…