java面向对象--对象数组和集合类

一、数组回顾

格式:
    数据类型[] 数组名=new 数据类型[m];
    数据类型:基本类型,引用类型

举例:
    int[] arr=new int[3];   //int类型的数组
    arr[0]=10;  //元素基本类型的值

    String[] arr=new String[3];//String类型的数组
    arr[0]="hello";//元素是String的对象
    arr[1]=new String("hello"); //元素是String的对象

    Dog[] ds=new Dog[3];    //Dog类型的数组
    ds[0]=new Dog();//元素是Dog对象

数组的局限性
    1)元素类型是固定的
    2)数组的长度是固定的

二、ArrayList集合

概述:Java的API中,为我们提供了一个类ArrayList来表示集合    
集合理解:
    1)集合是一个容器,只能装对象
    2)集合可以存储任意类型
    3)集合的长度是可变的

ArrayList构造方法
    ArrayList()  
        创建一个没有任何元素ArrayList对象(也就是创建了一个空的容器)
    举例:
        //<String>表示ArrayList集合只能存储Stirng类型的数据
        ArrayList<String> list=new ArrayList<String>();

    【注意】如果存储int类型,<>中必须写成Integer

ArrayList常见方法
    集合给我们提供了增,删,改,查的一些方法,方便对集合中的元素进行管理,如下
    boolean add(E e)
        向集合中添加元素,添加到集合的末尾

    void add(int index,E e)
        向集合中添加元素,添加到集合的指定索引位置

    E get(int index)
        获取指定索引位置的元素
    E remove(int index)
        根据索引删除元素,把被删除的元素返回
    E   set(int index,E e)
        根据索引修改元素,返回被修改的元素
    int size()
        获取集合的长度 


public class Demo1 {
    public static void main(String[] args) {
        //创建ArrayList集合对象
        ArrayList<String> list=new ArrayList<String>();
        //ArrayList提供了 添加,删除,修改,查询等方法
        //add方法,添加元素
        list.add("java");
        list.add("Hello");
        list.add("android");
        list.add("php");
        //get方法,根据索引获取元素
        String s1=list.get(1);
        System.out.println(s1);//结果: "Hello"    

        //size方法,获取长度
        int size=list.size();
        System.out.println(size);//结果:4

        //E set(int index, E element)   根据索引修改元素
        list.set(0, "JAVA");//把0索引的元素,修改成"JAVA"
        System.out.println(list);//结果:[JAVA,Hello,android,php

        //E remove(int index)   根据指定的索引删除元素
        list.remove(2); //删除2索引位置的元素
        System.out.println(list);//
    }
}   

三、集合的练习

  • 1.创建一个集合,存储String类型的元素,把最后一个元素置顶

    public static void method1{
        ArrayList<String> list=new ArrayList<String>();
        list.add("能约你吃饭吗");
        list.add("可以");
        list.add("你带钱没有");
        list.add("带了支付宝了");
        System.out.println(list);
        //把最后一个元素移除,并且把被移除的元素放在0索引位置
        list.add(0, list.remove(list.size()-1));
        System.out.println(list);
    }
    
  • 2.创建一个集合,存储Student类型的对象,求最大年龄的那个学生

    public static void method2(){
        ArrayList<Student> list=new ArrayList<Student>();
        list.add(new Student("张三",18));
        list.add(new Student("李四",20));
        list.add(new Student("王五",30));
        list.add(new Student("赵六",19));
    
        //从集合中获取0索引位置的元素,假设是最大值
        Student max=list.get(0);
        //让max的年龄,和其他的每一个学生对象的年龄进行比较
        for (int i = 0; i <list.size() ; i++) {
            Student stu = list.get(i);
            if(stu.getAge()>max.getAge()){
                max=stu;
            }
        }
        System.out.println(max.getName()+"..."+max.getAge());
    }
    

四、学生管理系统的步骤

1)定义Student类
    学号,姓名,年龄,居住地
    构造方法
    get和set

2)创建一个StudentManger类,要有主方法
    a: 写主界面
        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("请输入你的选择:");

    b: 根据主页面的提示 键盘录入
        Scanner sc = new Scanner(System.in);
        String choiceString = sc.nextLine();

    c: 对录入的指令,使用switch进行匹配,为了能够重复执行,在switch语句外面套一层while循环
        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("请输入你的选择:");
            //对输入的选项进行匹配
            switch (choiceString) {
                case "1":

                    break;
                case "2":

                    break;
                case "3":

                    break;
                case "4":

                    break;
                case "5":
                default:
                    System.out.println("谢谢你的使用 ");
                    System.exit(0);
                    break;
            }
        }

    d:测试一下,如果没有问题,再继续完成后续的各个功能
        每一个功能写成一个方法

        //查询功能
        public static void findAllStudent(ArrayList<Student> array) {
            if (array.size() == 0) {
                System.out.println("不好意思,目前没有学生信息可供查看,请回去重新选择你的操作");
                return;
            }
            System.out.println("学号\t\t姓名\t年龄\t居住地");
            for (int x = 0; x < array.size(); x++) {
                Student s = array.get(x);
                System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
            }
        }


        //添加功能
        public static void addStudent(ArrayList<Student> array) {
            Scanner sc = new Scanner(System.in);
            String id;
            while (true) {
                System.out.println("请输入学号:");
                id = sc.nextLine();

                boolean flag = false;
                for (int x = 0; x < array.size(); x++) {
                    Student s = array.get(x);
                    if (s.getId().equals(id)) {
                        flag = true;
                    }
                }

                if (flag == true) {
                    System.out.println("你输入的学号已经被占用,请重新输入");
                } else {
                    break;
                }
            }

            System.out.println("请输入姓名:");
            String name = sc.nextLine();
            System.out.println("请输入年龄:");
            String age = sc.nextLine();
            System.out.println("请输入地址:");
            String address = sc.nextLine();
            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            array.add(s);
            System.out.println("添加学生成功");
        }

    //删除功能
    public static void deleteStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要删除学生的学号:");
        String id = sc.nextLine();
        int index = -1;
        for (int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            if (s.getId().equals(id)) {
                index = x;
                break;
            }
        }
        if (index != -1) {
            array.remove(index);
            System.out.println("删除学生成功");
        } else {
            System.out.println("不好意思,你要删除的学号对应的学生信息不存在,请回去重新选择你的操作");
            return;
        }
    }

    //修改功能
    public static void updateStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要修改学生的学号:");
        String id = sc.nextLine();

        int index = -1;

        for (int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            if (s.getId().equals(id)) {
                index = x;
                break;
            }
        }

        if (index != -1) {
            System.out.println("请输入新姓名:");
            String name = sc.nextLine();
            System.out.println("请输入新年龄:");
            String age = sc.nextLine();
            System.out.println("请输入新地址:");
            String address = sc.nextLine();

            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            array.set(index, s);
            System.out.println("修改学生成功");
        } else {
            System.out.println("不好意思,你要修改的学号对应的学生信息不存在,请回去重新选择你的操作");
            return;
        }
    }

猜你喜欢

转载自blog.csdn.net/jeremy_ke/article/details/81222350