ArrayList集合&学生管理系统(1)

最后

对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

再分享一波我的Java面试真题+视频学习详解+技能进阶书籍

美团二面惜败,我的凉经复盘(附学习笔记+面试整理+进阶书籍)

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

// 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.3ArrayList存储字符串并遍历【应用】

1.3.1案例需求

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

1.3.2代码实现

/*

思路:

1:创建集合对象

2:往集合中添加字符串对象

3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现

4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现

5:遍历集合的通用格式

*/

public class ArrayListTest01 {

public static void main(String[] args) {

//创建集合对象

ArrayList array = new ArrayList();

//往集合中添加字符串对象

array.add(“刘正风”);

array.add(“左冷禅”);

array.add(“风清扬”);

//遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现

// System.out.println(array.size());

//遍历集合的通用格式

for(int i=0; i<array.size(); i++) {

String s = array.get(i);

System.out.println(s);

}

}

}

1.4ArrayList存储学生对象并遍历【应用】

1.4.1案例需求

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

1.4.2代码实现

/*

思路:

1:定义学生类

2:创建集合对象

3:创建学生对象

4:添加学生对象到集合中

5:遍历集合,采用通用遍历格式实现

*/

public class ArrayListTest02 {

public static void main(String[] args) {

//创建集合对象

ArrayList array = new ArrayList<>();

//创建学生对象

Student s1 = new Student(“林青霞”, 30);

Student s2 = new Student(“风清扬”, 33);

Student s3 = new Student(“张曼玉”, 18);

//添加学生对象到集合中

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());

}

}

}

1.5ArrayList存储学生对象并遍历升级版【应用】

1.5.1案例需求

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

​ 学生的姓名和年龄来自于键盘录入

1.5.2代码实现

/*

思路:

1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型

2:创建集合对象

3:键盘录入学生对象所需要的数据

4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

5:往集合中添加学生对象

6:遍历集合,采用通用遍历格式实现

*/

public class ArrayListTest {

public static void main(String[] args) {

//创建集合对象

ArrayList array = new ArrayList();

//为了提高代码的复用性,我们用方法来改进程序

addStudent(array);

addStudent(array);

addStudent(array);

//遍历集合,采用通用遍历格式实现

for (int i = 0; i < array.size(); i++) {

Student s = array.get(i);

System.out.println(s.getName() + “,” + s.getAge());

}

}

/*

两个明确:

返回值类型:void

参数:ArrayList array

*/

public static void addStudent(ArrayList array) {

//键盘录入学生对象所需要的数据

Scanner sc = new Scanner(System.in);

System.out.println(“请输入学生姓名:”);

String name = sc.nextLine();

System.out.println(“请输入学生年龄:”);

String age = sc.nextLine();

//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

Student s = new Student();

s.setName(name);

s.setAge(age);

//往集合中添加学生对象

array.add(s);

}

}

2.学生管理系统


2.1学生管理系统实现步骤【理解】

  • 案例需求

​ 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:

​ 添加学生:通过键盘录入学生信息,添加到集合中

​ 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

​ 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

​ 查看学生:将集合中的学生对象信息进行展示

​ 退出系统:结束程序

  • 实现步骤
  1. 定义学生类,包含以下成员变量

​ private String sid // 学生id

​ private String name // 学生姓名

​ private String age // 学生年龄

​ private String address // 学生所在地

  1. 学生管理系统主界面的搭建步骤

2.1 用输出语句完成主界面的编写

2.2 用Scanner实现键盘输入

2.3 用switch语句完成选择的功能

2.4 用循环完成功能结束后再次回到主界面

  1. 学生管理系统的添加学生功能实现步骤

3.1 定义一个方法,接收ArrayList集合

3.2 方法内完成添加学生的功能

​ ①键盘录入学生信息

​ ②根据录入的信息创建学生对象

​ ③将学生对象添加到集合中

​ ④提示添加成功信息

3.3 在添加学生的选项里调用添加学生的方法

  1. 学生管理系统的查看学生功能实现步骤

4.1 定义一个方法,接收ArrayList集合

4.2 方法内遍历集合,将学生信息进行输出

4.3 在查看所有学生选项里调用查看学生方法

  1. 学生管理系统的删除学生功能实现步骤

5.1 定义一个方法,接收ArrayList集合

5.2 方法中接收要删除学生的学号

5.3 遍历集合,获取每个学生对象

5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除

5.5 在删除学生选项里调用删除学生的方法

  1. 学生管理系统的修改学生功能实现步骤

6.1 定义一个方法,接收ArrayList集合

6.2 方法中接收要修改学生的学号

6.3 通过键盘录入学生对象所需的信息,并创建对象

6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象

6.5 在修改学生选项里调用修改学生的方法

  1. 退出系统

使用System.exit(0);退出JVM

2.2学生类的定义【应用】

public class Student {

//学号

private String sid;

//姓名

private String name;

//年龄

private String age;

//居住地

private String address;

public Student() {

}

public Student(String sid, String name, String age, String address) {

this.sid = sid;

this.name = name;

this.age = age;

this.address = address;

}

public String getSid() {

return sid;

}

public void setSid(String sid) {

this.sid = sid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

2.3测试类的定义【应用】

public class StudentManager {

/*

1:用输出语句完成主界面的编写

2:用Scanner实现键盘录入数据

3:用switch语句完成操作的选择

4:用循环完成再次回到主界面

*/

public static void main(String[] args) {

//创建集合对象,用于保存学生数据信息

ArrayList array = new ArrayList();

//用循环完成再次回到主界面

while (true) {

//用输出语句完成主界面的编写

System.out.println(“--------欢迎来到学生管理系统--------”);

System.out.println(“1 添加学生”);

System.out.println(“2 删除学生”);

System.out.println(“3 修改学生”);

System.out.println(“4 查看所有学生”);

System.out.println(“5 退出”);

System.out.println(“请输入你的选择:”);

//用Scanner实现键盘录入数据

Scanner sc = new Scanner(System.in);

String line = sc.nextLine();

//用switch语句完成操作的选择

switch (line) {

case “1”:

addStudent(array);

break;

case “2”:

deleteStudent(array);

break;

case “3”:

updateStudent(array);

break;

case “4”:

findAllStudent(array);

break;

case “5”:

System.out.println(“谢谢使用”);

System.exit(0); //JVM退出

}

}

}

//定义一个方法,用于添加学生信息

public static void addStudent(ArrayList array) {

//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息

Scanner sc = new Scanner(System.in);

String sid;

while (true) {

System.out.println(“请输入学生学号:”);

sid = sc.nextLine();

boolean flag = isUsed(array, sid);

if (flag) {

System.out.println(“你输入的学号已经被占用,请重新输入”);

} else {

break;

}

}

System.out.println(“请输入学生姓名:”);

String name = sc.nextLine();

System.out.println(“请输入学生年龄:”);

String age = sc.nextLine();

System.out.println(“请输入学生居住地:”);

String address = sc.nextLine();

//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

Student s = new Student();

s.setSid(sid);

s.setName(name);

s.setAge(age);

s.setAddress(address);

//将学生对象添加到集合中

array.add(s);

//给出添加成功提示

System.out.println(“添加学生成功”);

}

//定义一个方法,判断学号是否被使用

public static boolean isUsed(ArrayList array, String sid) {

//如果与集合中的某一个学生学号相同,返回true;如果都不相同,返回false

boolean flag = false;

最后

ActiveMQ消息中间件面试专题

  • 什么是ActiveMQ?
  • ActiveMQ服务器宕机怎么办?
  • 丢消息怎么办?
  • 持久化消息非常慢怎么办?
  • 消息的不均匀消费怎么办?
  • 死信队列怎么办?
  • ActiveMQ中的消息重发时间间隔和重发次数吗?

ActiveMQ消息中间件面试专题解析拓展:

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


redis面试专题及答案

  • 支持一致性哈希的客户端有哪些?
  • Redis与其他key-value存储有什么不同?
  • Redis的内存占用情况怎么样?
  • 都有哪些办法可以降低Redis的内存使用情况呢?
  • 查看Redis使用情况及状态信息用什么命令?
  • Redis的内存用完了会发生什么?
  • Redis是单线程的,如何提高多核CPU的利用率?

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


Spring面试专题及答案

  • 谈谈你对 Spring 的理解
  • Spring 有哪些优点?
  • Spring 中的设计模式
  • 怎样开启注解装配以及常用注解
  • 简单介绍下 Spring bean 的生命周期

Spring面试答案解析拓展

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


高并发多线程面试专题

  • 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
  • Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
  • Java 中 wait 和 sleep 方法有什么区别?
  • 如何在 Java 中实现一个阻塞队列?
  • 如何在 Java 中编写代码解决生产者消费者问题?
  • 写一段死锁代码。你在 Java 中如何解决死锁?

高并发多线程面试解析与拓展

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


jvm面试专题与解析

  • JVM 由哪些部分组成?
  • JVM 内存划分?
  • Java 的内存模型?
  • 引用的分类?
  • GC什么时候开始?

JVM面试专题解析与拓展!

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

的理解

  • Spring 有哪些优点?
  • Spring 中的设计模式
  • 怎样开启注解装配以及常用注解
  • 简单介绍下 Spring bean 的生命周期

Spring面试答案解析拓展

[外链图片转存中…(img-48o0g4Jt-1715811878163)]


高并发多线程面试专题

  • 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
  • Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
  • Java 中 wait 和 sleep 方法有什么区别?
  • 如何在 Java 中实现一个阻塞队列?
  • 如何在 Java 中编写代码解决生产者消费者问题?
  • 写一段死锁代码。你在 Java 中如何解决死锁?

高并发多线程面试解析与拓展

[外链图片转存中…(img-F367MjEY-1715811878164)]


jvm面试专题与解析

  • JVM 由哪些部分组成?
  • JVM 内存划分?
  • Java 的内存模型?
  • 引用的分类?
  • GC什么时候开始?

JVM面试专题解析与拓展!

[外链图片转存中…(img-Sorpefc5-1715811878164)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值