今日内容介绍
对象数组
集合类之ArrayList
学生管理系统案例
第1章对象数组
1.1对象数组概述
A:基本类型的数组:存储的元素为基本类型
int[] arr=
B:对象数组:存储的元素为引用类型
Student [] stus=new Student[3];
Student代表一个自定义类
Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,
都可以指向一个Student对象
1.2对象数组案例:
创建一个学生数组,存储三个学生对象并遍历
1.2.1案例代码一:
packagecom.xuexi;
publicclassStudent {
privateStringname;
privateintage;
publicStudent() {
}
publicStudent(String name,intage) {
this.name=name;
this.age=age;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name=name;
}
publicintgetAge() {
returnage;
}
publicvoidsetAge(intage) {
this.age=age;
}
}
packagecom.xuexi;
/*
*创建一个学生数组,存储三个学生对象并遍历
*
*分析:
* A:定义学生类
* B:创建学生数组
* C:创建学生对象
* D:把学生对象作为元素赋值给学生数组
* E:遍历学生数组
*/
publicclassStudentDemo {
publicstaticvoidmain(String[] args) {
//创建学生数组
Student[]students =newStudent[3];
//创建学生对象
Students1 =newStudent("曹操",40);
Students2 =newStudent("刘备",35);
Students3 =newStudent("孙权",30);
//把学生对象作为元素赋值给学生数组
students[0]= s1;
students[1]= s2;
students[2]= s3;
//遍历学生数组
for(intx=0; x
Students = students[x];
//System.out.println(s);
}
}
}
1.3对象数组的内存图
第2章集合类之ArrayList
2.1集合概述
A:我们xuexi的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。
为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储, 就不能是一个基本的变量,而应该是一个容器类型的变量。
B:到目前为止,我们xuexi过了哪些容器类型的数据呢?
StringBuilder,数组。
StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。
所以,我们目前只能选择数组了,也就是我们前面xuexi过的对象数组。
但是,数组的长度是固定的, 如果有时候元素的个数不确定的,我们无法定义出数组的长度,这个时候,java就提供了集合类供我们使用。
2.2ArrayList集合
2.2.1ArrayList添加新元素
2.2.1.1案例代码二:
packagecom.xuexi_01;
importjava.util.ArrayList;
/*
*集合类的特点:
*长度可变。
* ArrayList:
*大小可变数组的实现
* :是一种特殊的数据类型,泛型。
*怎么用呢?
*在出现E的地方我们使用引用数据类型替换即可
*举例:ArrayList,ArrayList
*
*构造方法:
* ArrayList()
*
*添加元素:
* publicboolean add(E e):添加元素
* publicvoid add(intindex,E element):在指定的索引处添加一个元素
*/
publicclassArrayListDemo {
publicstaticvoidmain(String[] args) {
//创建集合对象
ArrayListarray =newArrayList();
//add(E e):添加元素
array.add("hello");
array.add("world");
array.add("java");
}
}
2.2.2ArrayList删改查方法
A:获取元素
public E get(int index):返回指定索引处的元素
B:集合长度
publicint size():返回集合中的元素的个数
C:删除元素
publicboolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
D:修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
2.2.2.1案例代码三:
packagecom.xuexi_01;
importjava.util.ArrayList;
publicclassArrayListDemo2 {
publicstaticvoidmain(String[] args) {
//创建集合对象
ArrayList array =newArrayList();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//输出
}
}
2.2.3ArrayList遍历
集合的遍历思想和数组的遍历思想相同
循环遍历容器,依次取出里面的元素即可
2.2.3.1案例代码四:
packagecom.xuexi_01;
importjava.util.ArrayList;
/*
* ArrayList集合的遍历
*通过size()和get()配合实现的
*/
publicclassArrayListDemo3 {
publicstaticvoidmain(String[] args) {
//创建集合对象
ArrayList array =newArrayList();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//原始做法
for(intx=0; x
}
//如何知道集合中元素的个数呢?size()
for(intx=0; x
}
//最标准的用法
for(intx=0; x
String s = array.get(x);
}
}
}
2.3ArrayList集合案例
2.3.1ArrayList练习之存储字符串并遍历
向集合中添加任意四个字符串,遍历集合,依次打印取出的字符串
2.3.1.1案例代码五:
packagecom.xuexi_02;
importjava.util.ArrayList;
/*
*存储字符串并遍历
*分析:
* A:创建集合对象
* B:添加字符串元素
* C:遍历集合
*/
publicclassArrayListTest {
publicstaticvoidmain(String[] args) {
//创建集合对象
ArrayList array =newArrayList();
//添加字符串元素
array.add("向问天");
array.add("刘正风");
array.add("左冷禅");
array.add("风清扬");
//遍历集合
for(intx=0; x
String s = array.get(x);
}
}
}
2.3.2ArrayList练习之获取满足要求的元素
给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上
2.3.2.1案例代码六:
packagecom.xuexi_02;
importjava.util.ArrayList;
/*
*分析:
* A:定义字符串数组
* B:创建集合对象
* C:遍历字符串数组,获取到每一个字符串元素
* D:把获取到的字符串元素添加到集合
* E:遍历集合
*要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
*/
publicclassArrayListTest2 {
publicstaticvoidmain(String[] args) {
//定义字符串数组
String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};
//创建集合对象
ArrayList array =newArrayList();
//遍历字符串数组,获取到每一个字符串元素
for(intx=0; x
//把获取到的字符串元素添加到集合
array.add(strArray[x]);
}
//遍历集合
for(intx=0; x
Strings = array.get(x);
//要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
if(s.startsWith("张")) {
}
}
}
}
2.3.3ArrayList练习之存储自定义对象并遍历
A:自定义一个学生类,学生中有姓名和年龄属性,生成满参构造与空参构造
生成属性对应的getter/setter方法
B:在测试类中使用满参构造创建三个学生对象,然后将每个学生对象均添加到ArrayList集合中
C:遍历这个ArrayList集合,依次打印出每个学生的姓名和年龄
2.3.3.1案例代码七:
packagecom.xuexi_02;
publicclassStudent {
privateStringname;
privateintage;
publicStudent() {
}
publicStudent(String name,intage) {
this.name=name;
this.age=age;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name=name;
}
publicintgetAge() {
returnage;
}
publicvoidsetAge(intage) {
this.age=age;
}
}
packagecom.xuexi_02;
importjava.util.ArrayList;
/*
*存储自定义对象并遍历
*
*分析:
* A:定义学生类
* B:创建集合对象
* C:创建学生对象
* D:把学生对象作为元素添加到集合中
* E:遍历集合
*/
publicclassArrayListTest3 {
publicstaticvoidmain(String[] args) {
//创建集合对象
ArrayListarray =newArrayList();
//创建学生对象
Student s1 =newStudent("林青霞",28);
Student s2 =newStudent("张曼玉",30);
Student s3 =newStudent("景甜",25);
Student s4 =newStudent("柳岩",18);
//把学生对象作为元素添加到集合中
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
//遍历集合
for(intx=0; x
Student s = array.get(x);
}
}
}
第3章学生管理系统案例
3.1学生管理系统案例需求
利用集合完成对学生的增删改查四个功能
3.2学生管理系统案例实现
3.2.1创建学生类:
3.2.1.1案例代码九:
packagecom.xuexi;
/*
*这是我的学生类
*/
publicclassStudent {
//学号
privateStringid;
//姓名
privateStringname;
//年龄
privateStringage;
//居住地
privateStringaddress;
publicStudent() {
}
publicStudent(String id, String name, Stringage, String address) {
this.id=id;
this.name=name;
this.age=age;
this.address= address;
}
publicString getId() {
returnid;
}
publicvoidsetId(String id) {
this.id=id;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name=name;
}
publicString getAge() {
returnage;
}
publicvoidsetAge(String age) {
this.age=age;
}
publicString getAddress() {
returnaddress;
}
publicvoidsetAddress(String address) {
this.address= address;
}
}
3.2.2学生管理系统界面实现:
3.2.2.1案例代码十:
packagecom.xuexi;
importjava.util.ArrayList;
importjava.util.Scanner;
/*
*这是我的学生管理系统的主类
*
*步骤如下:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统的查看所有学生的代码编写
* D:学生管理系统的添加学生的代码编写
* E:学生管理系统的删除学生的代码编写
* F:学生管理系统的修改学生的代码编写
*/
publicclassStudentManagerTest{
publicstaticvoidmain(String[] args) {
//创建集合对象,用于存储学生数据
ArrayListarray=newArrayList();
//为了让程序能够回到这里来,我们使用循环
while(true){
//这是学生管理系统的主界面
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case"1":
//查看所有学生
break;
case"2":
//添加学生
break;
case"3":
//删除学生
break;
case"4":
//修改学生
break;
case"5":
//退出
// System.out.println("谢谢你的使用");
// break;
default:
System.exit(0);// JVM退出
break;
}
}
}
}
3.2.3学生管理系统之查询所有学生功能
3.2.3.1案例代码十一:
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassStudentManagerTest{
publicstaticvoidmain(String[] args) {
//创建集合对象,用于存储学生数据
ArrayList array =newArrayList();
//为了让程序能够回到这里来,我们使用循环
while(true){
//这是学生管理系统的主界面
//创建键盘录入对象
Scanner sc =newScanner(System.in);
StringchoiceString= sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case"1":
//查看所有学生
findAllStudent(array);
break;
case"2":
//添加学生
break;
case"3":
//删除学生
break;
case"4":
//修改学生
break;
case"5":
//退出
//System.out.println("谢谢你的使用");
//break;
default:
System.exit(0);//JVM退出
break;
}
}
}
//查看所有学生
publicstaticvoidfindAllStudent(ArrayList array) {
//首先来判断集合中是否有数据,如果没有数据,就给出提示,并让该方法不继续往下执行
if(array.size() == 0) {
return;
}
//\t其实就是一个tab键的位置
for(intx=0; x
Student s = array.get(x);
}
}
}
3.2.4学生管理系统之添加学生功能
3.2.4.1案例代码十二:
packagecom.xuexi;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassStudentManagerTest{
publicstaticvoidmain(String[] args) {
//创建集合对象,用于存储学生数据
ArrayList array =newArrayList();
//为了让程序能够回到这里来,我们使用循环
while(true){
//这是学生管理系统的主界面
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case"1":
//查看所有学生
break;
case"2":
//添加学生
addStudent(array);
break;
case"3":
//删除学生
break;
case"4":
//修改学生
break;
case"5":
//退出
//System.out.println("谢谢你的使用");
//break;
default:
System.exit(0);//JVM退出
break;
}
}
}
//添加学生
publicstaticvoidaddStudent(ArrayList array) {
//创建键盘录入对象
Scanner sc =newScanner(System.in);
//为了让id能够被访问到,我们就把id定义在了循环的外面
String id;
//为了让代码能够回到这里,用循环
while(true){
//String id = sc.nextLine();
id= sc.nextLine();
//判断学号有没有被人占用
//定义标记
booleanflag =false;
//遍历集合,得到每一个学生
for(intx=0; x
Student s = array.get(x);
//获取该学生的学号,和键盘录入的学号进行比较
if(s.getId().equals(id)) {
flag=true;//说明学号被占用了
break;
}
}
if(flag) {
}else{
break;//结束循环
}
}
String name = sc.nextLine();
String age = sc.nextLine();
String address = sc.nextLine();
//创建学生对象
Student s =newStudent();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
//把学生对象作为元素添加到集合
array.add(s);
//给出提示
}
}
3.2.5学生管理系统之删除学生功能
3.2.5.1案例代码十三:
packagecom.xuexi;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassStudentManagerTest{
publicstaticvoidmain(String[] args) {
//创建集合对象,用于存储学生数据
ArrayList array =newArrayList();
//为了让程序能够回到这里来,我们使用循环
while(true){
//这是学生管理系统的主界面
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case"1":
//查看所有学生
break;
case"2":
//添加学生
break;
case"3":
//删除学生
deleteStudent(array);
break;
case"4":
//修改学生
break;
case"5":
//退出
//System.out.println("谢谢你的使用");
//break;
default:
System.exit(0);//JVM退出
break;
}
}
}
//删除学生
publicstaticvoiddeleteStudent(ArrayList array) {
//删除学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就删除该学生
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String id = sc.nextLine();
//我们必须给出学号不存在的时候的提示
//定义一个索引
intindex = -1;
//遍历集合
for(intx=0; x
//获取到每一个学生对象
Student s = array.get(x);
//拿这个学生对象的学号和键盘录入的学号进行比较
if(s.getId().equals(id)) {
index= x;
break;
}
}
if(index == -1) {
}else{
array.remove(index);
}
}
}
3.2.6学生管理系统之修改学生功能
3.2.6.1案例代码十四:
packagecom.xuexi;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassStudentManagerTest{
publicstaticvoidmain(String[] args) {
//创建集合对象,用于存储学生数据
ArrayListarray =newArrayList();
//为了让程序能够回到这里来,我们使用循环
while(true){
//这是学生管理系统的主界面
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case"1":
//查看所有学生
break;
case"2":
//添加学生
break;
case"3":
//删除学生
break;
case"4":
//修改学生
updateStudent(array);
break;
case"5":
//退出
//System.out.println("谢谢你的使用");
//break;
default:
System.exit(0);//JVM退出
break;
}
}
}
//修改学生
publicstaticvoidupdateStudent(ArrayList array) {
//修改学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就修改该学生
//创建键盘录入对象
Scanner sc =newScanner(System.in);
String id = sc.nextLine();
//定义一个索引
intindex = -1;
//遍历集合
for(intx=0; x
//获取每一个学生对象
Student s = array.get(x);
//拿学生对象的学号和键盘录入的学号进行比较
if(s.getId().equals(id)) {
index= x;
break;
}
}
if(index == -1) {
}else{
String name = sc.nextLine();
String age = sc.nextLine();
String address = sc.nextLine();
//创建学生对象
Student s =newStudent();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
//修改集合中的学生对象
array.set(index,s);
//给出提示
}
}
}
领取专属 10元无门槛券
私享最新 技术干货