黑马集合

集合

package com.itheima.array;

import com.itheima.domain.student;

public class test {
    public static void main(String[] args) {
        //动态初始化一个student的数组长度为三
        student[] arr = new student[3];
        student stu1 = new student("丁真",25);
        student stu2 = new student("谷爱凌",26);
        student stu3 = new student("何同学",27);
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;
        for (int i = 0; i < arr.length; i++) {
           student temp =  arr[i];
            System.out.println(temp.getName()+"...."+temp.getAge());
        }



    }
}

使用集合的话可以使存储空间变化

package com.itheima.list;

import java.util.ArrayList;

public class demo {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("abc");
        //使用add方法可以添加任何数据
        ArrayList<String>list1 = new ArrayList<>();
        //和c++容器一样的用法需要指定存储的数据类型是什么样的
        list.add(0, "111");
        //在指定的索引位置添加元素
    }
}

package com.itheima.list;

import java.util.ArrayList;

public class demo02 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("000");
        list.add("gjk");

        String s = list.get(0);
        //返回指定位置的元素
        int size = list.size();
        //返回的是容器的元素的个数


    }

    private static void textset() {
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("000");
        list.add("gjk");

        list.set(1, "skf");//修改指定位置的元素返回的是被修改的元素
    }

    private static void testremove() {
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("000");
        list.add("gjk");

        boolean b1 = list.remove("abc");
        //删除指定元素返回是否删除成功
        list.remove(0);
        //根据索引进行删除数据返回的是被删除的数据
    }


}

集合遍历的时候可以使用get方法进行遍历

删除容器中的重复元素

package com.itheima.list;

import java.util.ArrayList;

public class test {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("test");
        list.add("test");
        list.add("test");
        list.add("test");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.equals("test")) {

                list.remove(i);
                i--;
                //加i--是因为删除之后后面的元素会向前面移动因此要i--以免错过要删除的元素
            }
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}

找出年龄低于18的学生并存入新的集合中,返回新的集合

package com.itheima.list;

import com.itheima.domain.student;

import java.util.ArrayList;

public class test02 {
    public static void main(String[] args) {
        ArrayList<student> students = new ArrayList<>();
        student stu1 = new student("顶真", 6);
        student stu2 = new student("怪零", 28);
        student stu3 = new student("何同学", 27);
        students.add(stu1);
        students.add(stu2);
        students.add(stu3);
        ArrayList<student> stuinfo = getlist(students);
        for (int i = 0; i < stuinfo.size(); i++) {
            System.out.println(stuinfo.get(i).getName());
        }

    }

    public static ArrayList<student> getlist(ArrayList<student> list) {
        //方法内部创建新的集合用于存储年龄小于十八岁的学生
        ArrayList<student> newlist = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            student stu = list.get(i);
            if (stu.getAge() < 18) {
                newlist.add(stu);
            }
        }
        return newlist;


    }
}

非常经典的学生管理系统

package com.itheima.test;

import com.itheima.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManger {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        //创建容器存放学生对象
        ArrayList<Student> list = new ArrayList<>();

        lo:
        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("请输入你的选择:");

            String choice = sc.next();
            switch (choice) {
                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("查看学生");
                    QueryStudent(list);
                    break;
                case "5":
                    System.out.println("感谢你的使用");
                    break lo;
                default:
                    System.out.println("您的输入有误");
                    break;
            }

        }
        }

    public static void updatestudent(ArrayList<Student> list) {
        System.out.println("请输入你要修改的学号");
        //2.键盘接受你要删除的学号
        Scanner sc = new Scanner(System.in);
        String updatesid = sc.next();

        //3.调用getindex方法,查找该学号在集合中出现的索引位置
        int index = getIndex(list, updatesid);
        if (index == -1) {
            System.out.println("查无信息,请重新输入");

        } else {
            //接受新的学生信息:
            System.out.println("请输入新的学生姓名");
            String name = sc.next();
            System.out.println("请输入新的学生年龄");
            int age = sc.nextInt();
            System.out.println("请输入新的学生生日");
            String birthday = sc.next();
            Student stu = new Student(updatesid, name, age, birthday);
            list.set(index, stu);

        }

    }

    public static void deletestudent(ArrayList<Student> list) {
        //1.给出提示信息你要删除的学号
        System.out.println("请输入你要删除的学号");
        //2.键盘接受你要删除的学号
        Scanner sc = new Scanner(System.in);
        String deletesid = sc.next();

        //3.调用getindex方法,查找该学号在集合中出现的索引位置
        int index = getIndex(list, deletesid);

        //4.根据索引判断,学号在集合中是否存在
        if (index == -1) {
            System.out.println("查无信息,请重新输入");

        } else {
            list.remove(index);
            System.out.println("删除成功");

        }

        //存在:删除
        //不存在:给出提示的信息
    }

    public static void QueryStudent(ArrayList<Student> list) {
        //1.判断集合中是否存在数据如果不存在给出提示信息
        //2.存在信息的话直接展示表头信息
        //3.遍历集合获取每一个学生的信息打印出来
        if (list.size() == 0) {
            System.out.println("无信息,请添加信息之后在进行查询");
            return;
        }
        System.out.println("学号\t姓名\t年龄\t生日");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());

        }
    }

    //添加学生的方法
    public static void addStudent(ArrayList<Student> list) {

        Scanner sc = new Scanner(System.in);
        //1.给出提示信息
        String sid;
        while (true) {
            System.out.println("请输入学号");
            sid = sc.next();
            int index = getIndex(list, sid);
            if (index == -1) {
                //学号不存在可以使用
                break;
            }
        }

        System.out.println("请输入姓名");
        String name = sc.next();
        System.out.println("请输入年龄");
        int age = sc.nextInt();
        System.out.println("请输入生日");
        String birthday = sc.next();
        //2.将键盘录入的信息封装为学生对象
        Student stu = new Student(sid, name, age, birthday);
        //3.将封装好的学生信息添加到容器中
        list.add(stu);

        //4.给出添加成功的信息

        System.out.println("添加学生成功");
    }

    public static int getIndex(ArrayList<Student> list, String sid) {
        //1.假设传入的学号在集合中是不存在的

        int index = -1;
        //2.遍历集合获取每一个学生对象准备查找
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //获取每一个学生对象的学号
            String id = stu.getSid();
            //使用获取的学号和传入的学号进行比对
            if (id.equals(sid)) {
                index = i;
            }
        }
        return index;
    }

}

posted @ 2023-02-22 17:33  怪树  阅读(29)  评论(0)    收藏  举报