ArrayList集合综合练习

文章目录

    • 题目1
      • 训练目标
      • 训练提示
      • 训练步骤
      • 参考答案
    • 题目2
      • 训练目标
      • 训练提示
      • 参考方案
      • 训练步骤
      • 参考答案
    • 题目3
      • 训练目标
      • 训练提示
      • 参考方案
      • 训练步骤
      • 参考答案
    • 题目4(综合)
      • 训练目标
      • 训练提示
      • 参考方案
      • 训练步骤
      • 参考答案

题目1

现有如下字符串元素:[“aaa”, “bbb”, “aaa”, “aaa”, “ccc”, “bbb”],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。

训练目标

ArrayList集合存储字符串元素,并遍历。

训练提示

1、创建ArrayList集合,泛型如何定义?

2、怎样将数据添加到集合中?

3、怎样遍历集合?

训练步骤

1、创建ArrayList集合对象,泛型声明为String类型

2、调用集合的add方法,将元素依次存入集合

3、遍历集合

​ 3.1、定义循环,索引从0到集合的size-1

​ 3.2、通过ArrayList集合的get方法,依次获取索引上的元素

参考答案

public class Test01 {public static void main(String[] args) {// 创建集合对象ArrayList<String> list = new ArrayList<>();// 添加元素list.add("aaa");list.add("bbb");list.add("aaa");list.add("aaa");list.add("ccc");list.add("bbb");// 遍历集合for (int i = 0; i < list.size(); i++) { // 索引从0到size-1String element = list.get(i); // 根据索引获取元素System.out.println(element);}}
}

题目2

请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下:

姓名:赵老师, 专业:javase
姓名:钱老师, 专业:javaee
姓名:孙老师, 专业:php
姓名:李老师, 专业:python

训练目标

ArrayList集合存储自定义对象,并遍历。

训练提示

1、怎样定义一个描述教师信息的类?

2、需要将教师对象存入集合,创建集合对象,泛型该怎样定义?

3、怎样将数据添加到集合中?

4、怎样遍历ArrayList集合?输出信息时,直接打印对象名称可以吗?怎样才能按照题目要求格式输出信息?

参考方案

训练步骤

1、新建Teacher类,成员变量为String类型的name和course,私有修饰,提供构造方法,提供get和set方法。

2、创建ArrayList集合对象,泛型声明为Teacher类型

3、创建若干Teacher对象,可以使用构造方法为成员变量赋值,调用集合的add方法,将元素依次存入集合。

4、遍历集合

​ 3.1、定义循环,索引从0到集合的size-1。

​ 3.2、通过ArrayList集合的get方法,依次获取索引上的元素。

​ 3.3、通过Teacher对象的get方法,获取属性值,拼接成要求的格式输出。

参考答案

public class Teacher {private String name; // 姓名private String course; // 课程public Teacher() {}public Teacher(String name, String course) {this.name = name;this.course = course;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}
}import java.util.ArrayList;public class Test02 {public static void main(String[] args) {// 创建集合对象ArrayList<Teacher> list = new ArrayList<>();// 创建教师对象Teacher t1 = new Teacher("赵老师", "javase");Teacher t2 = new Teacher("钱老师", "javaee");Teacher t3 = new Teacher("孙老师", "php");Teacher t4 = new Teacher("李老师", "python");// 添加元素list.add(t1);list.add(t2);list.add(t3);list.add(t4);// 遍历for (int i = 0; i < list.size(); i++) {Teacher t = list.get(i);System.out.println("姓名:" + t.getName() + ", 专业:" + t.getCourse());}}
}

题目3

有如下员工信息:

姓名:张三,工资:3000
姓名:李四,工资:3500
姓名:王五,工资:4000
姓名:赵六,工资:4500
姓名:田七,工资:5000

先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:

1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”

2、判断是否有姓名为“赵六”的员工,如果有,将其删除

3、给姓名为“田七”的员工,涨500工资

训练目标

ArrayList集合的修改元素和删除元素API

训练提示

1、需要定义员工类,将员工信息进行封装

2、创建ArrayList集合,创建员工对象,将所有员工对象存入集合

3、需要判断集合中元素的信息,那么肯定需要遍历集合获取到所有元素

4、ArrayList集合中,修改元素和删除元素的方法是什么?在遍历集合时,删除了集合中的元素,会不会对遍历产生影响呢?如果会,该怎么解决?

参考方案

训练步骤

1、定义员工类Worker,私有属性name和salary,分别为String和int类型,表示姓名和工资,提供构造、get、set方法

2、创建ArrayList集合,泛型为Worker类型,创建员工对象,将所有员工对象存入集合

3、使用for循环遍历集合,获取到每一个元素。

​ 3.1、判断元素的name属性,如果符合条件,作出相应的修改或者删除。

​ 3.2、遍历时如果删除元素,后面的元素会往前走,索引再加1就会有元素遗漏,所以删除后遍历索引要相应的减1,防止有元素遍历不到。

参考答案

public class Worker {private String name;private int salary;public Worker() {}public Worker(String name, int salary) {this.name = name;this.salary = salary;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}
}import java.util.ArrayList;public class Test03 {public static void main(String[] args) {// 创建集合对象ArrayList<Worker> list = new ArrayList<>();// 创建员工对象并添加到集合中list.add(new Worker("张三", 2000));list.add(new Worker("李四", 2500));list.add(new Worker("王五", 3000));list.add(new Worker("赵六", 3500));list.add(new Worker("田七", 4000));// 判断是否有王五,如果有,改名为王小五// 判断是否有赵六,如果有,删除赵六// 给田七加500块工资for (int i = 0; i < list.size(); i++) {Worker w = list.get(i);if ("王五".equals(w.getName())) {w.setName("王小五");list.set(i, w);}if ("赵六".equals(w.getName())) {// 注意,一旦删除元素,后面的元素会往前走,索引再加1就会有元素遗漏,所以删除后要--list.remove(i--);}if ("田七".equals(w.getName())) {w.setSalary(w.getSalary() + 500);list.set(i, w);}}// 再次遍历查看结果for (int i = 0; i < list.size(); i++) {Worker w = list.get(i);System.out.println(w.getName() + "---" + w.getSalary());}}
}

题目4(综合)

利用面向对象的思想设计一个图书管理系统。图书的属性有:编号,书名,作者,价格。要求提供如下功能:

1、提供操作菜单,可以选择要进行的操作。

2、可以添加图书,添加图书时,编号需要唯一,添加成功,返回到菜单。

3、可以查询图书,显示所有图书信息,然后返回到菜单。

4、可以根据书名,查询单本图书信息,显示信息后,返回到菜单。

5、可以删除图书,通过编号删除,删除成功后,返回到菜单。

6、可以修改图书的信息,但编号不可以修改,修改成功后,返回到菜单。

7、可以退出系统,结束程序运行。

提示:

1、所有图书信息由键盘录入

2、图书的价格可以定义为字符串类型,因为在键盘录入时,不可以先使用nextInt()方法获取整数然后再使用next()方法获取字符串,这样会导致next()方法获取不到数据。

训练目标

ArrayList集合API的综合运用、编程逻辑的锻炼

训练提示

1、首先需要创建一个图书类,封装图书信息。

2、提供操作菜单,可以通过键盘录入不同的数字来表示不同的操作,选择结构语句可以实现该需求。

3、管理图书,需要将图书存放起来,首先需要创建集合容器。

4、添加图书,即将图书存入集合中,但存入之前需要判定编号的唯一性,如果编号存在,需要重新录入。

5、查询所有图书,即为遍历集合显示信息。

6、查询单本图书,需要录入图书名称,遍历集合进行查询。

7、修改图书信息,需要根据编号先找到该图书,修改其除了编号之外的信息,存入集合覆盖原来的信息。

8、删除图书信息,需要根据编号先找到该图书,根据索引直接删除即可。

9、退出系统功能,借助结束程序的API实现即可。

参考方案

训练步骤

1、创建Book类,属性String类型的id,name,author,price。提供构造方法、get和set方法。

2、创建测试类Test04,在main方法中,创建键盘录入对象,创建ArrayList集合对象用于存储图书。

3、使用输出语句定义一个操作菜单,包含添加、查看全部、查看单个、修改、查询、退出功能,使用switch语句对键盘录入的菜单项进行判断。

4、定义方法实现判断id是否已经存在。方法返回值boolean类型,参数列表为集合ArrayList和要查找的id字符串。遍历集合,判断id是否与集合中的Book对象的id相同,如果有相同,返回true,否则返回false

5、定义方法实现添加功能。方法返回值void,参数列表为集合ArrayList。在方法中,先使用键盘录入获取用户录入的id信息,调用方法判断id是否存在,如果存在,重新录入,如果不存在,再依次获取图书的其他信息,创建图书对象,并将图书对象存入集合中,输出添加成功的提示。

6、定义方法实现查看所有图书。方法返回值void,参数列表为集合ArrayList。如果集合长度为0,给出提示,结束方法,否则遍历集合,获取每个图书对象,再调用对象的get方法,获取所有信息展示即可。

7、定义方式实现根据名称查看一本图书。方法返回值void,参数列表为集合ArrayList。键盘录入图书的名称,遍历集合,获取每个图书的名称信息进行比较,如果相同,输出该图书信息,结束方法。否则输出不存在该图书。

8、定义方法实现根据编号修改图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,再依次录入图书的修改后信息,创建新的图书对象,存入集合,将原对象覆盖,给出成功的提示,否则提示该编号图书不存在。

9、定义方法实现根据编号删除图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,根据索引删除该对象,返回成功的提示,否则提示该编号的图书不存在。

10、退出系统的功能直接调用System的exit方法实现即可。

参考答案

public class Book {private String bookId;private String name;private String author;private double price;public Book() {}public Book(String bookId, String name, String author, double price) {this.bookId = bookId;this.name = name;this.author = author;this.price = price;}public String getBookId() {return bookId;}public void setBookId(String bookId) {this.bookId = bookId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args) {// 创建集合用于存储图书信息ArrayList<Book> list = new ArrayList<>();// 键盘录入Scanner sc = new Scanner(System.in);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("6:退出系统");String type = sc.next();switch (type) {case "1":// 添加addBook(list);break;case "2":// 查看所有图书findAllBooks(list);break;case "3":// 查询某本图书findBookByName(list);break;case "4":// 修改图书updateBook(list);break;case "5":// 删除图书deleteBook(list);break;case "6":System.out.println("感谢使用,再见");System.exit(0); // 退出系统default:System.out.println("选择有误,请重新输入");break;}}}// 删除图书private static void deleteBook(ArrayList<Book> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入您要删除的图书编号:");String id = sc.next();for (int i = 0; i < list.size(); i++) {Book b = list.get(i);if (id.equals(b.getBookId())) { // 编号存在// 删除图书并结束方法list.remove(i);System.out.println("~~~删除成功~~~");return;}}System.out.println("没有该编号的图书信息");}// 修改图书private static void updateBook(ArrayList<Book> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入您要修改的图书编号:");String id = sc.next();for (int i = 0; i < list.size(); i++) {Book b = list.get(i);if (id.equals(b.getBookId())) { // 编号存在System.out.println("请输入修改后图书的名称:");String name = sc.next();System.out.println("请输入修改后图书的作者:");String author = sc.next();System.out.println("请输入修改后图书的价格:");double price = sc.nextDouble();Book newBook = new Book(id, name, author, price);// 更新数据list.set(i, newBook);System.out.println("~~~修改成功~~~");return;}}// 如果编号不存在System.out.println("没有该编号的图书信息");}// 根据图书的名称查询图书信息private static void findBookByName(ArrayList<Book> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入您要查询的图书名称:");String name = sc.next();for (int i = 0; i < list.size(); i++) {Book b = list.get(i);if (name.equals(b.getName())) {System.out.println("编号\t" + "书名\t" + "作者\t" + "价格");System.out.println(b.getBookId() + "\t" + b.getName() + "\t" + b.getAuthor() + "\t" + b.getPrice());return;}}System.out.println("没有该名称图书信息");}// 查看所有图书信息private static void findAllBooks(ArrayList<Book> list) {if (list == null || list.size() == 0) {System.out.println("尚无图书信息");return;}System.out.println("编号\t" + "书名\t" + "作者\t" + "价格");for (int i = 0; i < list.size(); i++) {Book b = list.get(i);System.out.println(b.getBookId() + "\t" + b.getName() + "\t" + b.getAuthor() + "\t" + b.getPrice());}}// 查询编号是否存在public static boolean isExist(ArrayList<Book> list, String bookId) {// 遍历,如果发现相同id,返回true,for (int i = 0; i < list.size(); i++) {if (bookId.equals(list.get(i).getBookId())) {return true;}}// 如果没有,返回falsereturn false;}// 添加图书public static void addBook(ArrayList<Book> list) {// 键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入图书信息:");System.out.println("编号:");String bookId;while (true) {bookId = sc.next();// 查询编号是否存在if (isExist(list, bookId)) {System.out.println("该编号已经存在,请重新输入");} else {break;}}System.out.println("名称:");String name = sc.next();System.out.println("作者:");String author = sc.next();System.out.println("价格:");double price = sc.nextDouble();// 将信息封装到图书对象Book b = new Book(bookId, name, author, price);// 添加到集合list.add(b);System.out.println("~~~添加成功~~~");}
}

###

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql的基本用法(上)非常详细、快速上手

上篇结束了java基础&#xff0c;本篇主要对Mysql中的一些常用的方法进行了总结&#xff0c;主要对查询方法进行了讲解&#xff0c;包括重要的多表查询用到的内连接和外连接等&#xff0c;以下代码可以直接复制到可视化软件中&#xff0c;方便阅读以及练习&#xff1b; SELECT *…

Microsoft Word去除页面多余的换行符

大家写论文的时候或者排版的时候可能遇到换行符多出来了导致页面的不美观。像下面这张图一样&#xff0c;虽然latex不会出现这种问题。 处理方式 点击插入然后点击分页 结果展示

普通用户用哪款电脑杀毒软件最好?

前言 各位小伙伴接触到电脑的时候&#xff0c;都一定有听过“电脑一定要安装杀毒软件”这句话。 毕竟在电脑诞生之初到今天&#xff0c;电脑木马和病毒依旧存在。 中了木马或病毒的电脑会出现什么现象&#xff1f;具体得看中了什么样的病毒。 但轻则资料泄漏、电脑瘫痪&…

React Admin 前端脚手架之ant-design-pro

文章目录 一、React Admin 前端脚手架选型二、React Admin 前端脚手架之ant-design-pro三、ant-design-pro使用步骤四、常用总结&#xff08;持续更新&#xff09;EditableProTable组件 常用组件EditableProTable组件 编辑某行后&#xff0c;保存时候触发发送请求EditableProTa…

图片上传下载

数据模型: imageUrl: , <el-form-item label"楼盘图片:" prop"pic" class"uploadImg" v-model"emp.pic"> <el-upload class"avatar-uploader" …

Nginx 的SSL证书配置

目录 1.申请域名&#xff0c;证书下载 2.准备站点源代码 3.修改nginx 对应网站的配置文件 4.修改 host 文件 http协议访问的网站默认会显示不安全&#xff0c;因为数据默认是明文传输的 https是httpssl&#xff0c;ssl是加密协议&#xff0c;通过证书来进行加密的&#xff…

柯桥小语种学习,留学韩语 生活日常口语 语法

① N이다/A/V/았ㄹ/을지도 모르다 说不定 이미 도착했을 지도 모르니까 전화해 봐요 说不定已经到了&#xff0c;打电话试试 주말에 세일이 있을지도 모르니까 주말에 가 보자 周末说不定会搞活动&#xff0c;我们周末去吧 ② ㄴ/은/는/았었는/ㄹ/을지 모르다 不知道 처음이…

轻量检测模型PP-PicoDet解析

Paper&#xff1a;PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices official implementation&#xff1a;https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.7/configs/picodet Backbone 作者通过实验发现&#xff0c;ShuffleNetV2在移动…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢&#xff1f; 需要3678个汉字&#xff0c;看看我怎么知道的。 第一步&#xff1a;先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢&#xff1f; 进入中国天气网&#xff1a;http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

RK3399平台入门到精通系列讲解(实验篇)信号驱动 IO 实验

🚀返回总目录 文章目录 一、什么是信号驱动IO1.1、信号驱动IO1.2、fcntl 函数介绍二、信号驱动 IO 实验源码2.1、Makefile2.2、驱动部分代码2.3、测试应用代码一、什么是信号驱动IO 1.1、信号驱动IO 信号驱动 IO 不需要应用程序查询设备的状态,一旦设备准备就绪,会触发 SI…

spring 之 事务

1、JdbcTemplate Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 1.1 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency&…

Jetson Orin Nano_初识,关于板载资源

1、开发板上有什么 英伟达Jetson Orin Nano&#xff0c;内存8GB&#xff0c;算力40TOPS&#xff08;CPU&#xff09;固态硬盘128GB&#xff08;系统镜像以及文件存储&#xff09;千兆以太网口、无线网卡&#xff08;用来上网&#xff09;4个USB&#xff08;用来接鼠标键盘&…