package _02_复杂对象练习;

public class StudentTest1 {
    public static void main(String[] args) {
        //1 创建出来一个学生数组
        Student[] students = new Student[3];
        students[0] = new Student(1L,"zhangsan",18);
        students[1] = new Student(2L,"lisi",18);
        students[2] = new Student(3L,"wangwu",18);

        // 根据id 查询是否存在
        boolean flag = contains(1L, students);
        if(flag){
            System.out.println("删除id存在能够正常删除");
            // 把删除元素锁在位置的值修改成Null
            removeElementById(1L,students);
            // 打印数组当中元素
            printArr(students);
        }else{
            System.out.println("删除id 在数组当中不存在");
        }
    }
    /**
     * 打印数组
     * @param students
     */
    private static void printArr(Student[] students) {
        for (Student student : students) {
            if(student!=null){
                System.out.println(student);
            }
        }
    }
    /**
     * 把id 锁在位置的值设置成null
     */
    private static void removeElementById(long id, Student[] students) {
        for (int i = 0; i < students.length; i++) {
            Student student = students[i];
            // 注意我们拿传递id  和 student 当中id 进行比较
            if(id == student.getId()){
                students[i] = null;
            }
        }
    }

    private static boolean contains(Long id, Student[] students) {
        /**
         * NullPointerException ： 空指针异常
         * 原因： 使用null 去调用了属性或者是方法
         */
        for (Student student : students) {
            // 判断当前student 不为哦那个做id 比较， 因为数组当中如果没存满，可能为空null
            if(student!=null){
                if(student.getId() == id){
                    return true;
                }
            }
        }
        return false;
    }
}
