🌟个人博客:www.hellocode.top🌟
⭐所有文章均在上方博客首发,其他平台同步更新
🔥本文专栏:Java零基础指南
🌞更多相关内容请点击前往 Java零基础指南 查看
⚡如有问题,欢迎指正,一起学习~~
- 对象数组
// 需求:将(张三,23)(李四,24)(王五,25)封装为3个学生对象并存入数组,随后遍历数组,将学生信息输出
// 新建一个Student类
public class Student{
private String name;
private String age;
public Student(){}
public Student(String name, String age){
this.name = name;
this.age = age;
}
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;
}
}
//----------下面为一个新的class文件----------
public class Test{
public static void main(String[] args){
Student[] arr = new Student[3];
Student stu1 = new Student("张三","23");
Student stu2 = new Student("李四","24");
Student stu3 = new Student("王五","25");
arr[0] = stu1;
arr[1] = stu2;
arr[2] = stu3;
for(int i = 0; i < arr.length; i++){
System.out.println("姓名:" + arr[i].getName() + " 年龄:" + arr[i].getAge());
}
}
}
集合和数组的特点对比
- 集合类的特点:提供一种存储空间可变的存储类型,存储的数据容量可以发生改变
- 集合和数组的区别:
共同点:都是存储数据的容器
不同点:数组的容量是固定的,集合的容量是可变的
如果存储的数据,长度经常发生改变,推荐使用集合
ArrayList集合
- 构造方法:
ArrayList()
构造一个初始容量为10的空列表 - 成员方法:
boolean add(E e)
将指定的元素添加到此列表的尾部
void add(int index, E element)
将指定的元素插入此列表中的指定位置
如果没有进行数据类型的限制,可以添加任何数据类型的数据
如果要进行限制,格式为:
ArrayList<数据类型> list = new ArrayList<数据类型>();
JDK7版本以后,可写为:
ArrayList<数据类型> list = new ArrayList<>();
<E>:是一种特殊的数据类型,泛型。<>里面只能写引用数据类型,int、double等基本数据类型不行
public boolen remove(Object)
删除指定的元素,返回是否删除成功,只能删除第一个匹配到的元素
public E remove(int index)
删除指定索引处的元素,返回被删除的元素
public E set(int index, E element)
修改指定索引处的元素,返回被修改的元素
public E get(int index)
返回指定索引处的元素
public int size()
返回集合中的元素的个数
案例
// 需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}
// 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
// 新建一个Student类
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;
}
}
//---------------------------下面为一个新的class文件----------------------------------------------
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
ArrayList<Student> list = new ArrayList<>();
Student stu1 = new Student("张三",23);
Student stu2 = new Student("李四",24);
Student stu3 = new Student("王五",25);
list.add(stu1);
list.add(stu2);
list.add(stu3);
for(int i = 0; i < list.size(); i++){
System.out.println("姓名:" + list.get(i).getName() + " 年龄:" + list(i).getAge());
}
}
}
// 需求:创建一个存储String的集合,内部存储(test,张三,李四,test,test)字符串,删除所有的test字符串,将删除后的集合元素打印到控制台
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add("test");
list.add("张三");
list.add("李四");
list.add("test");
list.add("test");
for(int i = 0; i < list.size(); i++){
if("test".equals(list.get(i))){ // 变量和常量调用方法,尽量常量去调用,减少不必要的错误
list.remove(i);
i--;
}
}
System.out.println(list);
}
}
// 需求:定义一个方法,方法接收一个集合对象(泛型为Student),方法内部将年龄低于18的学生对象找出并存入新集合对象,方法返回新集合
// 新建student类步骤省略
import java.util.ArrayList;
public static void main(String[] args){
Student stu1 = new Student("张三",23);
Student stu2 = new Student("李四",16);
Student stu3 = new Student("王五",22);
Student stu4 = new Student("赵六",13);
Student stu5 = new Student("马七",18);
ArrayList<Student> list = new ArrayList<>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
ArrayList<Student> newList = getList(list);
for(int i = 0; i < newList.size(); i++){
System.out.println("姓名:" + newList.get(i).getName() + " 年龄:" + newList.get(i).getAge());
}
}
public static ArrayList<Student> getList(ArrayList<Student> list){
ArrayList<Student> newList = new ArrayList<>();
for(int i = 0; i < list.size(); i++){
if(list.get(i).getAge() < 18){
newList.add(list.get(i));
}
}
return newList;
}
学生管理系统
- 实现思路
- 定义学生类
public class Student{
// 成员变量
private int sid; //学号
private String name; //姓名
private int age; //年龄
private String birthday; //生日
// 构造方法
public Student(){}
public Student(int sid, String name, int age, String birthday){
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
// 成员方法
public void setSid(int sid){
this.sid = sid;
}
public int getSid(){
return sid;
}
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;
}
public void setBirthday(String birthday){
this.birthday = birthday;
}
public String getBirthday(){
return birthday;
}
}
- 主界面代码编写
import java.util.Scanner;
import java.util.ArrayList;
public class studentManager {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Student> list = new ArrayList<>(); // 创建一个容器
// 搭建主界面菜单
lo: //添加一个标号,配合break完成退出操作
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("---------------------------------");
System.out.print("请输入您的选择:");
int choice = sc.nextInt();
switch (choice) {
case 1:
addStudent(list);
break;
case 2:
delStudent(list);
break;
case 3:
System.out.println("修改");
break;
case 4:
queryStudent(list);
break;
case 5:
System.out.println("您已退出,感谢您的使用");
break lo;
default:
System.out.println("您的输入有误,请重新输入");
break;
}
}
}
}
- 添加学生的代码编写
// addStudent
public static void addStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
int sid; // 写在while外面,方便整个addSt
while(true){
System.out.print("请输入学号:");
sid = sc.nextInt();
int index = getIndex(list, sid);
if(index == -1){
break;
}else{
System.out.println("该学号已存在,请重新输入");
}
}
System.out.print("请输入姓名:");
String name = sc.next();
System.out.print("请输入年龄:");
int age = sc.nextInt();
System.out.print("请输入生日:");
String birthday = sc.next();
Student stu = new Student(sid, name, age, birthday);
list.add(stu);
System.out.println("恭喜您,添加成功!");
}
- 查看学生的代码编写
// queryStudent
public static void queryStudent(ArrayList<Student> list){
if(list.size() == 0){
System.out.println("当前无数据,请添加数据后重试");
}
else{
System.out.println("学号\t\t\t姓名\t\t年龄\t\t生日");
for(int i = 0; i < list.size(); i++){
Student stu = list.get(i);
System.out.println(stu.getSid() + "\t\t\t" + stu.getName() + "\t\t" + stu.getAge() + "\t\t" + stu.getBirthday());
}
}
}
- 删除/修改学生学号不存在问题
// 定义一个方法(getIndex),用于从集合中查找【学号】在【集合】中出现的索引位置
public static int getIndex(ArrayList<Student> list, int sid){
int index = -1; //假设传入的学号不存在
for(int i = 0; i < list.size(); i++){
Student stu = list.get(i);
int id = stu.getSid();
if(id == sid){
index = i;
}
}
return index;
}
- 删除学生的代码编写
// delStudent
public static void delStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.print("请输入您要删除的学生学号:");
int delSid = sc.nextInt();
int index = getIndex(list, delSid);
if(index == -1){
System.out.println("查无信息,请重新输入");
}else{
list.remove(index);
System.out.println("恭喜您,删除成功!");
}
}
- 修改学生的代码编写
// updateStudent
public static void updateStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.print("请输入您要修改的学生学号:");
int updateSid = sc.nextInt();
int index = getIndex(list, updateSid);
if(index == -1){
System.out.println("查无信息,请重新输入");
}else{
System.out.print("请输入新的学生姓名:");
String name = sc.next();
System.out.print("请输入新的学生年龄:");
int age = sc.nextInt();
System.out.print("请输入新的学生生日:");
String birthday = sc.next();
Student stu = new Student(updateSid, name, age, birthday);
list.set(index, stu);
System.out.println("恭喜您,修改成功!");
}
}
推荐阅读:Java面向对象进阶