葵花宝典:JavaSE-day09
JavaSE 第 09 天 —— ArrayList、学生管理系统
能力目标
- 能说出集合和数组的区别:
- 能使用集合对数据进行增删改查:
- 能看懂学生管理系统执行流程:
1. ArrayList
☆1.1 集合同数组的区别对比(理解)
视频时长 / 10’38’’
1.1.1 「集合同数组的区别对比」问题
集合和数组有和区别?
1.1.2 「集合同数组的区别对比」答案
集合和数组有和区别?
- 数组:长度不可变,可以存基本类型或引用类型的数据。
- 集合:长度可变,只能存引用数据类型数据。
☆1.2 ArrayList的构造方法和添加方法(掌握)
视频时长 / 11’15’’
1.2.1 「ArrayList的构造方法和添加方法」问题
- ArrayList集合后面的这个代表什么意思?
1.2.2 「ArrayList的构造方法和添加方法」答案
- ArrayList集合后面的这个代表什么意思?
- :泛型。代表该ArrayList集合对象中只能存储String类型的数据。
- 用于约束集合中存储元素的数据类型。
1.2.3 「ArrayList的构造方法和添加方法」课堂练习
练习时长:6分钟。
需求:创建集合对象,泛型使用,并任意添加5个数据到集合中,最后在控制台输出集合。
public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");array.add("IOS");array.add("PHP");System.out.println(array);
}
☆1.3 ArrayList常用方法(掌握)
视频时长 / 10’15’’
1.2.1 「ArrayList的构造方法和添加方法」课堂练习
练习时长:10分钟。
需求:练习视频中讲解的方法。
public static void main(String[] args) {//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素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));//IndexOutOfBoundsExceptionSystem.out.println(array.remove(3));//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素System.out.println(array.set(1,"javaee"));//IndexOutOfBoundsExceptionSystem.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.4 集合存储字符串并遍历(操作)
视频时长 / 04’27’’
1.4.1 「集合存储字符串并遍历」课堂练习
练习时长:5分钟。
需求:创建集合对象,将任意字符串添加到集合中,并遍历集合输出字符串。
public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("world");array.add("java");array.add("IOS");array.add("PHP");//遍历集合for(int i = 0;i < array.size();i++){String s = array.get(i);System.out.println(s);}
}
☆1.5 集合存储学生对象并遍历(操作)
视频时长 / 03’40’’
1.5.1 「集合存储学生对象并遍历」问题
- 集合存储学生对象时,集合中保存的是什么?
1.5.2 「集合存储学生对象并遍历」答案
- 集合存储学生对象时,集合中保存的是什么?
- 集合中保存的是学生对象的地址值。
1.5.3 「集合存储学生对象并遍历」课堂练习
练习时长:8分钟。
需求:定义学生类,在定义测试类,在测试类中创建集合对象,再创建3个学生对象,添加到集合中,并遍历集合输出学生对象中的属性值。
// 学生类定义,此处省略,大家自行完成...public static void main(String[] args) {//创建集合对象ArrayList<String> array = new ArrayList<String>();//往集合中添加字符串对象//创建学生对象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++) {String s = array.get(i);System.out.println(s);}
}
☆1.6 键盘录入学生信息到集合(操作)
视频时长 / 05’48’’
1.6.1 「键盘录入学生信息到集合」课堂练习
练习时长:10分钟。
需求:定义一个方法,方法中完成键盘录入学生对象的功能,在main方法中调用该方法,获取学生对象,再将学生对象存入集合中并遍历。
public static void main(String[] args) {//创建集合对象ArrayList<Student> array = new ArrayList<Student>();//为了提高代码的复用性,我们用方法来改进程序Student s = addStudent();Student s2 = addStudent();Student s3 = addStudent();// 将学生对象添加到集合中array.add(s);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());}}public static Student addStudent() {//键盘录入学生对象所需要的数据Scanner sc = new Scanner(System.in);System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");String age = sc.nextAge();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(name,age);//往集合中添加学生对象return s;
}
☆1.7 集合删除元素(操作)
视频时长 / 09’52’’
1.7.1 「集合删除元素」问题
- 调用一次remove(Object o)是否能删除集合中指定的所有元素?
1.7.2 「集合删除元素」答案
调用一次remove(Object o)是否能删除集合中指定的所有元素?
- 不行。remove()只能删除集合中的第一个元素。
- 如果想要删除所有指定的元素,需要遍历集合。
1.7.3 「集合删除元素」课堂练习
练习时长:7分钟。
需求:创建集合对象,将任意字符串添加到集合中,添加的字符串中"java"有多个元素重复,切有些连在一次,要求删除所有"java"元素,最后打印集合。
public static void main(String[] args){//创建集合ArrayList<String> array = new ArrayList<String>();//添加元素array.add("hello");array.add("java");array.add("java");array.add("world");array.add("java");array.add("java");array.add("java");array.add("IOS");array.add("PHP");//遍历集合for(int i = 0;i < array.size();i++){String s = array.get(i);// 判断字符串是否是"java"if(s.equals("java")){// 如果是,则删除array.remove(i);// 删除后,元素会补位,所以将索引回退i--;}}System.out.println(array);
}
☆1.8 集合数据筛选(操作)
视频时长 / 08’32’’
1.8.1 「集合数据筛选」问题
- 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?
1.8.2 「集合数据筛选」答案
- 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?
- 不是。getList()方法中新建了一个集合对象,所以同main方法中的集合对象不是同一个。而是两个完全不相干的集合。
1.8.3 「集合数据筛选」答案
练习时长:8分钟。
需求:定义一个方法,方法接收一个集合对象,方法内部先新建一个集合,再将传入集合中的年龄低于18岁的学生对象添加到新集合中,方法返回新集合。
public static void main(String[] args){//创建集合对象ArrayList<String> array = new ArrayList<String>();//往集合中添加字符串对象//创建学生对象Student s1 = new Student("林青霞", 30);Student s2 = new Student("风清扬", 13);Student s3 = new Student("张曼玉", 18);//添加学生对象到集合中array.add(s1);array.add(s2);array.add(s3);ArrayList<Student> newArray = getList(array);// 遍历for(int i = 0;i<list.size();i++){Student stu = newArray.get(i);System.out.println(stu.getName()+"---" + stu.getAge());}
}public static ArrayList<Student> getList(ArrayList<Student> list){// 创建一个新集合ArrayList<Student> array = new ArrayList<Student>();// 遍历集合找出年龄低于18岁的学生对象,添加到新集合中for(int i = 0;i<list.size();i++){Student s = list.get(i);if(s.getAge() >= 18){//添加到新集合中array.add(s);}}return array;
}
2 学生管理系统
☆2.1 学生管理系统项目演示(理解)
视频时长 / 03’23’’
2.1.1 「学生管理系统项目演示」问题
- 学生管理系统大概会使用到哪些学过的知识点?
2.1.2 「学生管理系统项目演示」答案
- 学生管理系统大概会使用到哪些学过的知识点?
- 循环: 欢迎界面循环展示
- 判断: 判断学号是否重复
- 键盘录入: 用户录入数据
- 集合: 存储学生对象
- switch: 匹配用户选择
☆2.2 实现步骤分析和学生类的代码编写(操作)
视频时长 / 06’06’’
2.2.1 「实现步骤分析和学生类的代码编写」课堂练习
练习时长:4分钟。
需求:完成学生类的定义。
public class Student {//学号private String sid;//姓名private String name;//年龄private int age;//生日private String brithday;public Student() {}public Student(String sid, String name, int age, String brithday) {this.sid = sid;this.name = name;this.age = age;this.brithday = brithday;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(int name) {this.name = name;}public int getAge() {return age;}public void setAge(String age) {this.age = age;}public String getBrithday() {return brithday;}public void setBrithday(String brithday) {this.brithday = brithday;}
}
☆2.3 菜单搭建(操作)
视频时长 / 07’03’’
2.3.1 「菜单搭建」课堂练习
练习时长:6分钟。
需求:完成菜单搭建。
public static void main(String[] args) {//创建集合对象,用于保存学生数据信息ArrayList<Student> array = new ArrayList<Student>();//用循环完成再次回到主界面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.next();//用switch语句完成操作的选择switch (line) {case "1"://添加学生break;case "2"://删除学生break;case "3"://修改学生break;case "4":// 查看所有学生break;case "5":System.out.println("谢谢使用");System.exit(0); //JVM退出}}
}
☆2.4 添加学生逻辑-基本实现(操作)
视频时长 / 08’06’’
2.4.1 「添加学生逻辑-基本实现」课堂练习
练习时长:5分钟。
需求:完成添加学生逻辑。
//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);String sid = sc.next();System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");int age = sc.next();System.out.println("请输入学生生日:");String brithday = sc.next();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(sid,name,age,brithday);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");
}
☆2.5 查看学生代码实现(操作)
视频时长 / 08’20"
2.5.1 「查看学生代码实现」课堂练习
练习时长:5分钟。
需求:完成添加学生逻辑。
//定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> array) {//判断集合中是否有数据,如果没有显示提示信息if (array.size() == 0) {System.out.println("无信息,请先添加信息再查询");//为了让程序不再往下执行,我们在这里写上return;return;}//显示表头信息//\t其实是一个tab键的位置System.out.println("学号\t\t\t姓名\t\t年龄\t\t生日"); //将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getBrithday());}
}
☆2.6 判断学号是否存在的方法定义(操作)
视频时长 / 09’52’‘’
2.6.1 「判断学号是否存在的方法定义」课堂练习
练习时长: 10分钟。
需求:完成下面案例。
//定义一个方法,判断学号是否被使用
public static boolean getIndex(ArrayList<Student> array, String sid) {//如果与集合中的某一个学生学号相同,则index为对应的索引值,如果没有相同则index=-1int index = -1;// 遍历集合for(int i=0; i < array.size(); i++) {Student s = array.get(i);if(s.getSid().equals(sid)) {index = i;break;}}return index;
}
☆2.7 删除学生代码实现(操作)
视频时长 / 06’01’’
2.7.1 「删除学生代码实现」课堂练习
练习时长:7分钟
需求:完成删除学生代码实现。
//定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {//键盘录入要删除的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid = sc.nextLine();// 调用getIndex()获取sid学生所在集合中的索引位置// 如果不存在,则返回-1int index = getIndex(array,sid);if (index == -1) {System.out.println("该信息不存在,请重新输入");} else {array.remove(index);//给出删除成功提示System.out.println("删除学生成功");}
}
☆2.8 修改学生代码实现(操作)
视频时长 / 06’34’’
2.8.1 「修改学生代码实现」课堂练习
练习时长:8分钟。
需求:定义一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
//定义一个方法,用于修改学生信息
public static void updateStudent(ArrayList<Student> array) {//键盘录入要修改的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入你要修改的学生的学号:");String sid = sc.nextLine();// 调用getIndex()获取sid学生所在集合中的索引位置// 如果不存在,则返回-1int index = getIndex(array,sid);if (index == -1) {System.out.println("该信息不存在,请重新输入");} else {//键盘录入要修改的学生信息System.out.println("请输入学生新姓名:");String name = sc.nextLine();System.out.println("请输入学生新年龄:");int age = sc.nextLine();System.out.println("请输入学生新生日:");String brithday = sc.nextLine();//创建学生对象Student s = new Student(sid,name,age,brithday);// 修改集合中的学生对象array.set(index,s);//给出修改成功提示System.out.println("修改学生成功");}
}
☆2.9 解决添加学生学号的重复问题(操作)
视频时长 / 06’09’’
2.9.1 「解决添加学生学号的重复问题」课堂练习
练习时长:5分钟
需求:完成解决添加学生学号的重复问题。
//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);String sid;while (true) {System.out.println("请输入学生学号:");sid = sc.nextLine();int index = getIndex(array, sid);if (index == -1) {// index=-1,则证明学号不存在,可以结束循环break;}}System.out.println("请输入学生姓名:");String name = sc.next();System.out.println("请输入学生年龄:");int age = sc.next();System.out.println("请输入学生生日:");String brithday = sc.next();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student(sid,name,age,brithday);//将学生对象添加到集合中array.add(s);//给出添加成功提示System.out.println("添加学生成功");
}
葵花宝典:JavaSE-day09相关推荐
- 刘意JavaSE 学习笔记——总纲
开始学习JavaSE了,记录下自己学习的进程. 学习大纲 1 开发环境配置 day01 配置 2 基础语法(基本差不多,看一下就好) day02 命名规则,进制转换 day03 运算符,if语句 da ...
- java学习笔记day09 final、多态、抽象类、接口
java学习笔记day09 思维导图 final . 多态 . 抽象类 . 接口 (都很重要) 一.final 二.多态 多态中的成员访问特点⭐ [P237] 多态的好处 [P239] 多态的弊端 向 ...
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)
[前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 -- [下载]本人刚学习Jav ...
- Java面试题全集(上)+JavaSE基础
三重:代码.底层内存.源码 第一阶段:开发常用 JavaSE基础.IDE.Maven.Gradle.SVN.Git.Spring.Spring MVC.Spring Boot.Spring Cloud ...
- JAVASE面试总结
java面试题总结 JAVA面试题(JAVASE相关) 1.面向对象的特征有哪些方面? 2.访问修饰符public,private,protected,以及不写(默认)时的区别? 3.String 是 ...
- 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection
[JavaSE]day03_Date.SimpleDateFormat.Calendar.Collection 1.Date及其经常使用API 1)JAVA 中的时间 Java中的时间使用标准类库的D ...
- java视频为什么这么多_为什么看java教学视频教的都是javase,两者难道语言相同吗?...
Java 分类 Java SE(Java Platform Standard Edition) :Java平台标准版.主要用于桌面应用程序的开发,是Java技术的核心,提供基础 Java开发工具.执行 ...
- 简述JavaME,JavaSE,JavaEE
javaME:微型版,应用于移动等 JavaSE:标准版,应用于桌面环境 JavaEE:企业版,应用于基于Java的应用服务器 Java SE(Java Platform,Standard Editi ...
- javaee, javaweb和javase的区别以及各自的知识体系
javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...
- Java 基础入门随笔(1) JavaSE版——java语言三种技术架构
1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...
最新文章
- 前后端分离接口规范~
- python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...
- 秀尔算法:破解RSA加密的“不灭神话” --zz
- PP部分主数据导出SQVI设置
- kotlin将对象转换为map_在 Kotlin 的 data class 中使用 MapStruct
- sublime 消除锯齿_如何在Sublime中消除麻烦
- Redis集群搭建笔记
- 使用caffemodel模型(由mnist训练)测试单张手写数字样本
- 摄像头,一万块三个,嘿嘿!欢迎来到一年一度iPhone 吐槽大会!
- SQL FILESTREAM与数据库快照,镜像,TDE和日志传送的兼容性
- Android开发技术周报 Issue#69
- C语言字符串类型转换为整型,c语言中将一个字符串转换到整型数据类型的函数是什么?...
- maven配置eclipse案例及命令
- Kerberos认证模型(c语言实现)
- 计算机xp画板在哪找,xp系统画图工具在哪里|xp画图工具有什么功能
- 考软件测试自学钢琴,新手学钢琴用什么app-自学钢琴比较好的软件推荐 - Iefans...
- eclipse+ADT使用第三方静态库及COCOS2d问题汇总
- JSON数据导出Excel表
- 用C语言实现杨辉三角
- (附源码)ssm产品裂变管理系统 毕业设计 100953