Java 集合基础

news/2024/10/30 11:31:41/

文章目录

    • 一、集合概念
    • 二、ArrayList
      • 1. 构造方法和添加方法
      • 2. 常用方法
    • 三、案例演示
      • 1. 存储字符串并遍历
      • 2. 存储学生对象并遍历
      • 3. 键盘录入学生对象并遍历

一、集合概念

编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需要,更适应不了变化的需求,此时就用到了集合。
集合类的特点:提供一种存储空间可变的存储模型。存储的数据容量可以发生改变。

集合类有很多,目前我们先学习一个:ArrayList。

二、ArrayList

ArrayList 是可调整大小的数组实现, 是一种特殊的数据类型,泛型。
怎么用呢?
在出现 E 的地方我们使用引用数据类型替换即可。
例如,ArrayList<String>,ArrayList<Student>。

1. 构造方法和添加方法

在这里插入图片描述

//创建一个空的集合对象
ArrayList<String> array = new ArrayList<>(); //后面ArrayList尖括号里面的数据类型可写可不写,系统会自动推断//添加元素至集合末尾
array.add("hello");
array.add("world");
array.add("tyut");
System.out.println(array); //[hello, world, tyut]//添加元素至指定索引处
array.add(1, "java"); //注意索引越界问题

2. 常用方法

在这里插入图片描述

array.remove("world");
array.remove(1);
array.set(1, "java");
array.get(0);
array.size();

三、案例演示

1. 存储字符串并遍历

需求:创建一个存储字符串的集合,存储 3 个字符串元素,使用程序实现在控制台遍历该集合。
① 遍历集合,首先要能够获取到集合中的每一个元素,这个通过 get(int index) 方法实现;
② 获取集合的长度,这个通过 size() 方法实现。

package com.zxe;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;public class Test {public static void main(String[] args) {ArrayList<String> array = new ArrayList<>();array.add("不要");array.add("迷恋");array.add("哥");for (int i = 0; i < array.size(); i++) {String s = array.get(i);System.out.println(s);}}
}

2. 存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储 3 个学生对象,使用程序实现在控制台遍历该集合。
① 定义学生类;
② 创建集合对象;
③ 创建学生对象;
④ 添加学生对象到集合中;
⑤ 遍历集合,采用通用遍历格式实现。

//学生类package com.zxe;public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}
}
//学生测试类package com.zxe;import java.util.ArrayList;public class StudentTest {public static void main(String[] args) {ArrayList<Student> array = new ArrayList<>();Student s1 = new Student("张三", 17);Student s2 = new Student("李四", 19);Student s3 = new Student("王五", 13);array.add(s1);array.add(s2);array.add(s3);for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getName() + ", " + s.getAge());}}
}

在这里插入图片描述

3. 键盘录入学生对象并遍历

与上面不同的是,这里的学生对象需要我们通过键盘输入。

package com.zxe;import java.util.ArrayList;
import java.util.Scanner;public class StudentTest {public static void main(String[] args) {ArrayList<Student> array = new ArrayList<>();for (int i = 0; i < 3; i++) {System.out.println("请输入第" + (i + 1) + "个同学的姓名和年龄:");addStudent(array);}for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getName() + ", " + s.getAge());}}public static void addStudent(ArrayList<Student> array) {Student student = new Student();Scanner sc = new Scanner(System.in);String name = sc.nextLine();int age = sc.nextInt();student.setName(name);student.setAge(age);array.add(student);}
}

在这里插入图片描述

学生类与上面一致,键盘录入多个学生信息,这里为了提高代码的复用性,我们用方法来改进程序。


http://www.ppmy.cn/news/26911.html

相关文章

【Linux】环境变量,命令行参数,main函数三个参数保姆教学

目录 ☃️1.奇奇怪怪的现象和孤儿进程 ☃️2.环境变量 ☃️3.深刻理解main函数的前两个参数和命令行参数 ☃️1.奇奇怪怪的现象和孤儿进程 首先回顾一下之前我们学过的fork&#xff08;&#xff09;创建子进程 fork(void)的返回值有两种 注意fork&#xff08;&#xff09;头…

FreeRTOS与UCOSIII任务状态对比

FreeRTOS任务状态 1、运行态 正在运行的任务&#xff0c;正在使用处理器的任务。 单核处理器中任何时候都有且只有一个任务处于运行态。 2、就绪态 已经准备就绪&#xff08;非阻塞或挂起&#xff09;&#xff0c;可以立即运行但还没有运行的任务。 正在等待比自己高优先级…

设计模式浅谈

什么是设计模式 设计模式是一种软件设计的思想。是在软件开发过程中&#xff0c;经过验证的、用于解决在特定环境下重复出现的、特定问题的解决方案。 设计模式的设计原则 原文链接&#xff1a;https://blog.csdn.net/qq_43471489/article/details/124067150 设计原则 1、…

DP(2)--背包DP(0-1 背包,完全背包,多重背包)

滚动数组&#xff1a; 让数组滚动起来&#xff0c;每次都使用固定的几个存储空间&#xff0c;来达到压缩&#xff0c;节省存储空间的作用。 一般用于递推和动态规划中 一维数组 比如&#xff1a;求斐波那契数列第100项 long long arr[3]; arr[0] 1; arr[0] 1; for (int i 2…

【深度学习编译器系列】2. 深度学习编译器的通用设计架构

在【深度学习编译器系列】1. 为什么需要深度学习编译器&#xff1f;中我们了解到了为什么需要深度学习编译器&#xff0c;和什么是深度学习编译器&#xff0c;接下来我们把深度学习编译器这个小黑盒打开&#xff0c;看看里面有什么东西。 1. 深度学习编译器的通用设计架构 与…

05 基于STL的演讲比赛流程管理系统

文件基本上是黑马程序员的文档&#xff0c;部分添加自己需要的内容&#xff0c;仅用于自己学习&#xff01;链接&#xff1a;黑马程序视频课程GitHub:链接 演讲比赛流程管理系统 1、 演讲比赛程序需求 1.1 比赛规则 学校举行一场演讲比赛&#xff0c;共有12个人参加。比赛共…

制造企业为何要上数字化工厂系统?

以目前形势来看&#xff0c;数字化转型是制造企业生存的关键&#xff0c;而数字化工厂管理系统是一个综合性、系统性的工程&#xff0c;波及整个企业及其供应链生态系统。数字化工厂系统所要实现的互联互通系统集成、数据信息融合和产品全生命周期集成&#xff0c;将方方面面的…

Springboot扩展点系列之终结篇:Bean的生命周期

前言关于Springboot扩展点系列已经输出了13篇文章&#xff0c;分别梳理出了各个扩展点的功能特性、实现方式和工作原理&#xff0c;为什么要花这么多时间来梳理这些内容&#xff1f;根本原因就是这篇文章&#xff1a;Spring bean的生命周期。你了解Spring bean生命周期&#xf…