java基础笔记系列_Day08

一、集合基础

  1. 概述
    提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
  2. ArrayList
    • 可调整大小的数组实现
    • :是一种特殊的数据类型,泛型
  3. 使用
    ArrayList, ArrayList
  4. ArrayList构造方法和添加方法
方法说明
public ArrayList()创建一个空的集合对象
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index, E element)在此集合中的指定位置插入制定的元素
     package Day09;
      import java.util.ArrayList;
      public class T1 {
          public static void main(String[] args) {
              //创建对象
              ArrayList<String> list = new ArrayList<String>();
              //添加数据
              list.add("it");
              list.add("hei");
              list.add("ma");
              System.out.println(list);
              //集合中添加数据
              list.add(0,"shijiazhuang");
              System.out.println(list);
              //集合末尾添加元素
              list.add(4,"javaee");
              System.out.println(list);
          }
      }
  1. 常用集合方法
    public boolean add(E e) 向集合中添加元素
    public voidadd(int index,E e) 向集合中指定索引处添加元素
    public boolean remove(Object obj) 删除集合中指定元素
    public remove(int index) 删除集合中指定索引处的元素
    public set(int index,E e) 修改集合中指定索引处的元素
    public get(int index) 获取集合中指定索引处的元素
    public int size() 获取集合的长度
	package Day09;
 import java.util.ArrayList;
 public class T2 {
     public static void main(String[] args) {
         //创建对象
         ArrayList<String> list = new ArrayList<>();
         list.add("it");
         list.add("hei");
         list.add("ma");
         //删除某个元素,返回是否删除成功
 //        System.out.println(list.remove("i"));
 //        System.out.println(list.remove("it"));
         //删除指定位置元素
 //        System.out.println(list.remove(0));
 //        System.out.println(list.remove(3));
         //替换指定位置元素返回被替换的元素
 //        System.out.println(list.set(0,"i"));
 //        System.out.println(list.set(4,"i"));
         //读取指定位置元素
 //        System.out.println(list.get(0));
 //        System.out.println(list.get(4));
         System.out.println(list);
     }
 }
  1. 案例
  public class Moive {
      public String getTitle() {
          return title;
      }
      public void setTitle(String title) {
          this.title = title;
      }
      public String getDirector() {
          return director;
      }
      public void setDirector(String director) {
          this.director = director;
      }
      public String getType() {
          return type;
      }
      public void setType(String type) {
          this.type = type;
      }
      public Moive(String title, String director, String type) {
          this.title = title;
          this.director = director;
          this.type = type;
      }
      private String title;
      private String director;
      private String type;
  }
  import java.util.ArrayList;
  public class MoiveTest {
      public static void main(String[] args) {
      	//创建对象
          Moive film1 = new Moive("唐山大地震","冯小刚","灾难");
          Moive film2 = new Moive("羞羞的铁拳","宋阳","喜剧");
          Moive film3 = new Moive("集结号","冯小刚","历史");
          //创建集合
          ArrayList<Moive> film = new ArrayList<>();
          //将电影添加到集合中
          film.add(film1);
          film.add(film2);
          film.add(film3);
          //输出导演为冯小刚的电影
          for(int i =0;i<film.size();i++){
              if(film.get(i).getDirector().equals("冯小刚")){
                  System.out.println(film.get(i).getTitle()+"-"+film.get(i).getDirector()
                  +"-"+film.get(i).getType());
              }
          }
      }
  }
存储字符串并遍历
  import java.util.ArrayList;
  public class T3 {
      public static void main(String[] args) {
          //创建对象
          ArrayList<String> list = new ArrayList<String>();
          //添加元素
          list.add("0");
          list.add("1");
          list.add("2");
          System.out.println("集合: " + list);
          //遍历集合元素
          for (int i = 0; i < list.size(); i++) {
              String s = list.get(i);
              System.out.println(s);
          }
      }
  }
存储学生对象并遍历
  public class Student {
      private int age;
      private String name;
      public int getAge() {
          return age;
      }
      public void setAge(int age) {
          this.age = age;
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public Student(int age, String name) {
          this.age = age;
          this.name = name;
      }
      public Student() {
      }
  }
  import java.util.ArrayList;
  public class StudentTest1 {
      public static void main(String[] args) {
          //创建学生对象
          Student s1 = new Student(19, "林青霞");
          Student s2 = new Student(34, "风清扬");
          Student s3 = new Student(27, "张三丰");
          //创建集合对象
          ArrayList<Student> list = new ArrayList<Student>();
          //向集合中添加对象
          list.add(s1);
          list.add(s2);
          list.add(s3);
          System.out.println(list);//输出对象地址
          //遍历集合
          for (int i = 0; i < list.size(); i++) {
              Student s = list.get(i);
              System.out.println(s);//输出地址
              System.out.println(s.getName() + ", " + s.getAge());//输出属性
          }
      }
  }
存储学生对象并遍历升级版
Student类同上
  import java.util.ArrayList;
  import java.util.Scanner;
  public class StudentTes2 {
      public static void main(String[] args) {
          //创建集合对象
          ArrayList<Student> list = new ArrayList<Student>();
          //调用方法添加学生对象
          addStudent(list);
          addStudent(list);
          addStudent(list);
          //遍历输出
          for(int i = 0;i<list.size();i++){
              Student s = list.get(i);//此处用s接收获取的数据
              System.out.println(s.getName()+", "+s.getAge());
          }
      }
      public static void addStudent(ArrayList<Student> list){
          //创建学生对象
          Student s = new Student();
          //创建录入对象
          Scanner sc = new Scanner(System.in);
          //提示信息
          System.out.print("请输入姓名: ");
          s.setName(sc.nextLine());
          System.out.print("请输入年龄: ");
          s.setAge(sc.nextInt());
          list.add(s);
      }
  }

思考:目前来说学生的“age”属性是int类型,后期的学生管理系统int类型会出小问题,在此留作思考。课上的案例是将age定义为String类型。此次案例无所谓。

二、学生管理系统

  1. 定义学生类
 package StudentManager;    
 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;
     }
     //四个参数的get/set方法
     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;
     }
 }
  1. 显示主界面
  public static void main(String[] args) {
        //创建集合对象用于存储学生信息
        ArrayList<Student> list = new ArrayList<Student>();
        //循环控制
        while (true) {
            //编写主界面
            System.out.println();
            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 sc = new Scanner(System.in);
            //提示信息
            System.out.print("输入想要进入的功能: ");
            String line = sc.nextLine();
            //通过分支结构控制进入主界面
            switch (line) {
                case "1":
                    //System.out.println("添加学生");
                    //调用添加学生方法
                    addStudent(list);
                    break;
                case "2":
                    //System.out.println("删除学生");
                    deleteStudent(list);
                    break;
                case "3":
                    //System.out.println("修改学生");
                    //调用方法
                    updateStudent(list);
                    break;
                case "4":
                    //System.out.println("查看所有学生");
                    //调用方法
                    findAllStudent(list);
                    break;
                case "5":
                    System.out.println("谢谢使用");
                    System.exit(0);
            }
        }
}
  1. 定义添加学生方法
//定义添加学生方法优化版-判断学号重复
public static void addStudent(ArrayList<Student> list) {
    //创建录入对象
    Scanner sc = new Scanner(System.in);
    //设置学生信息之前先创建学生对象
    Student s = new Student();
    //定义学号
    String sid;
    while (true) {
        //提示信息并设置学生信息
        System.out.println("请输入学号: ");
        sid = sc.nextLine();
        //判断是否存在
        if (ifUsed(list, sid)) {
            System.out.println("您输入的学号已存在,请重新输入");
            continue;
        }
        break;
    }
    System.out.println("请输入姓名: ");
    String name = sc.nextLine();
    System.out.println("请输入年龄: ");
    String age = sc.nextLine();
    System.out.println("请输入居住地: ");
    String address = sc.nextLine();
    //设置学生信息
    s.setSid(sid);
    s.setName(name);
    s.setAge(age);
    s.setAddress(address);
    //添加学生对象到集合
    list.add(s);
    //输出添加成功
    System.out.println();
    System.out.println("添加成功!");
}
  1. 定义删除学生方法
//定义删除学生方法优化版-判断学号不存在
public static void deleteStudent(ArrayList<Student> list) {
    //创建录入对象
    Scanner sc = new Scanner(System.in);
    //提示信息
    System.out.println("请输入想要删除的学生的学号:");
    //定义变量接收学号
    String sid = sc.nextLine();
    //定义索引变量接收删除对象的索引
    int index = -1;
    //遍历集合查找
    for (int i = 0; i < list.size(); i++) {
        //定义变量接收集合元素
        Student s = list.get(i);
        //判断是否是想要删除的元素
        if (s.getSid().equals(sid)) {
            index = i;
            break;
        }
   }
    //判断
    if (index == -1) {
        System.out.println("学生信息不存在,请重新输入。");
    } else {
        list.remove(index);
        //给出提示
        System.out.println("删除学生成功!");
    }
}
  1. 定义修改学生方法
 //定义修改学生方法优化版-判断学号不存在
 public static void updateStudent(ArrayList<Student> list) {
     //定义索引
     int index = -1;
     //创建录入对象
     Scanner sc = new Scanner(System.in);
     //输入提示信息,以学号为索引查找
     System.out.println("请输入想要修改的学生的学号:");
     //定义变量接收键盘录入的信息
     String sid = sc.nextLine();
     //创建新的学生对象接收数据,用于最终替换旧的学生对象
     Student s = new Student();
     //定义变量接收新的学生数据
     System.out.println("请输入新的学生姓名: ");
     String name = sc.nextLine();
     System.out.println("请输入新的学生年龄: ");
     String age = sc.nextLine();
     System.out.println("请输入新的学生居住地: ");
     String address = sc.nextLine();
     //将学生数据给以新的学生对象
     s.setSid(sid);
     s.setName(name);
     s.setAge(age);
     s.setAddress(address);
     //遍历集合将该学号的学生替换掉
     for (int i = 0; i < list.size(); i++) {
         //定义一个变量用于接收遍历的集合对象
         Student ss = list.get(i);
         //判断符合条件的学生
         if (s.getSid().equals(ss.getSid())) {
             //list.set(i,s);
             index = i;
             break;
         }
     }
     if (index == -1) {
         System.out.println("学生信息不存在,请重新输入");
     } else {
         list.set(index, s);
         //提示信息
         System.out.println("修改成功!");
     }
 }
  1. 定义查看全部学生方法
 //定义查看所有学生方法

 public static void findAllStudent(ArrayList<Student> list) {
     //没有学生信息时提示
     if (list.size() == 0) {
         System.out.println("没有学生信息,请先添加。");
         return;
     }
     //显示表头信息
     System.out.println("学号\t\t" + "姓名\t" + "年龄\t" + "居住地\t");
     //遍历集合
     for (int i = 0; i < list.size(); i++) {
         //定义一个学生对象接收信息
         Student s = list.get(i);
         //输出该学生信息
         System.out.println(s.getSid() + "\t" + s.getName()
                 + "\t" + s.getAge() + "\t\t" + s.getAddress());
     }
 }
  1. 定义退出功能
   System.exit(0);//退出虚拟机功能  
  1. 定义方法确定学号是否重复
//定义方法判断学号是否重复
public static boolean ifUsed(ArrayList<Student> list, String sid) {
    //定义标记
    boolean flag = false;
    //遍历是否存在
    for (int i = 0; i < list.size(); i++) {
        //创建学生对象接收集合元素
        Student s = list.get(i);
        //判断形参中的学号是否存在,使用equals方法
        if (s.getSid().equals(sid)) {
            flag = true;
        }
    }
    return flag;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值