对象数组的添加,删除和遍历.Java

创建一个Student的类,属性包含学号,姓名,年龄 ,在此基础上进行对象的添加,删除,遍历

null调用方法必定报错,所以要判断数组里的元素 (本题数组里的每个元素都是一个对象)是否为null

复制代码
package text;

public class Student {
    private String id;
    private String name;
    private int age;

    public Student() {
    }

    public Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    private static boolean contains(Student[] arr,Student s){
        boolean flag=true;
        for (int i = 0; i < arr.length; i++) {

            if(arr[i]!=null){  //因为null调用其他的方法会报错
                if(arr[i].getId()==s.getId()){
                    //相同,id重复
                    flag=false;
                }
            }
            //为空的话直接进行下个索引的判断
        }
        return flag;
    }
    private static int indexCount(Student[] arr){
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                count++;
            }
        }
        return count;
    }
    private static Student[] CreatNewArr(Student[] arr){
        Student[] newArr=new Student[arr.length+1];
        for (int i = 0; i < arr.length; i++) {
            newArr[i]=arr[i];
        }
        return newArr;
    }
    private static int judgeIndex(Student[] arr){
        int index=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==null){
                index=i;
                break;
            }
        }
        return index;
    }
}

对象的创建与使用(添加,遍历)

**题目:**创建一个含3个对象的数组,然后在添加一个对象在数组当中,最后遍历

分析:

复制代码
1,创建一个长度为3的数组
复制代码
2,创建学生对象
复制代码
3,把学生对象添加到数组当中
复制代码
4,再次创建一个学生对象,添加到数组当中
复制代码
5,判断id的唯一性,来确定是否添加对象
复制代码
6,添加对象,判断原数组是否存满。未满:直接添加;满了:创建新数组
复制代码
package text;

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

        //1,创建一个长度为3的数组
        Student[] arr=new Student[3];
        //2,创建学生对象
        Student s1=new Student("001","肘子",19);
        Student s2=new Student("002","花木兰",120);
        Student s3=new Student("003","头牌",9);
        //3,把学生对象添加到数组当中
        arr[0]=s1;
        arr[1]=s2;
        arr[2]=s3;
        //4,再次创建一个学生对象,添加到数组当中
        Student s4=new Student("004","西施",18);
        //5,判断id的唯一性
        boolean flag=contains(arr,s4);
        //6,添加对象
        if(flag){
            //6.2id没有重复-----添加学生对象;
            //判断当前数组是否满了,没有满,直接添加;满了,创建新数组去添加
            int count=indexCount(arr);
            if(count==arr.length){
                //数组满了,创建新数组
                System.out.println("数组满了,创建新数组newArr[]");
                Student[] newArr=CreatNewArr(arr);
                newArr[newArr.length-1]=s4;
                //遍历添加后的数组
                for (int i = 0; i < newArr.length; i++) {
                    System.out.println(newArr[i].getId()+","+newArr[i].getName()+","+newArr[i].getAge());
                }
            }else{
                //数组没有满了,查找数组的空位置,再存储进去
                System.out.println("数组没有满了,查找数组的空位置,再存储进arr[]");
                int index=judgeIndex(arr);
                arr[index]=s4;
                //遍历添加后的数组
                for (int i = 0; i < arr.length; i++) {
                    System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
                }
            }

        }else{
            //6.1id重复-----提示重复,重新输入
            System.out.println("id重复,重新输入");
        }


    }


    private static boolean contains(Student[] arr,Student s){
        boolean flag=true;
        for (int i = 0; i < arr.length; i++) {

            if(arr[i]!=null){  //因为null调用其他的方法会报错
                if(arr[i].getId()==s.getId()){
                    //相同,id重复
                    flag=false;
                }
            }
            //为空的话直接进行下个索引的判断
        }
        return flag;
    }
    private static int indexCount(Student[] arr){
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                count++;
            }
        }
        return count;
    }
    private static Student[] CreatNewArr(Student[] arr){
        Student[] newArr=new Student[arr.length+1];
        for (int i = 0; i < arr.length; i++) {
            newArr[i]=arr[i];
        }
        return newArr;
    }
    private static int judgeIndex(Student[] arr){
        int index=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==null){
                index=i;
                break;
            }
        }
        return index;
    }
}

结果

注意

对象的创建与使用 (删除)

**题目:**通过id删除学生信息

**分析:**判断id在数组中存不存在。存在,则删除;不存在,则提示删除失败

找到id对应的索引,将对应的数组元素置为null

复制代码
package text;
import java.util.Scanner;
public class deleteStudnet {
    public static void main(String[] args) {
        //1,创建一个长度为3的数组
        Student[] arr=new Student[3];
        //2,创建学生对象
        Student s1=new Student(1,"肘子",19);
        Student s2=new Student(2,"花木兰",120);
        Student s3=new Student(3,"头牌",9);
        //3,把学生对象添加到数组当中
        arr[0]=s1;
        arr[1]=s2;
        arr[2]=s3;
        System.out.println("原数组:");
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
            }
        }
        //4,删除指定id的对象----找到该id对应的索引
        System.out.println("请输入要删除的id");
        Scanner sc=new Scanner(System.in);
        int id=sc.nextInt();
        int index=discoverIndex(arr,id);//查找该id对应的数组
        if(index>=0){
            arr[index]=null;
        }else{
            System.out.println("删除失败");
        }

        //5,遍历数组
        System.out.println("删除后的数组:");
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
            }
        }
    }
    private static int discoverIndex(Student[] arr,int id){

        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                if(arr[i].getId()==id){

                    return i;

                }
            }
        }
        return -1;//因为不存在-1的索引
    }
}

结果

相关推荐
没有bug.的程序员8 分钟前
Async Profiler:最精准的火焰图工具
java·jvm·spring·对象分配·async profiler
FPGA_无线通信9 分钟前
OFDM 精频偏补偿
算法·fpga开发
程序员-King.11 分钟前
day109—同向双指针(字符串)—每个字符最多出现两次的最长子字符串(LeetCode-3090)
算法·leetcode·双指针
青山的青衫12 分钟前
【单调栈和单调队列】LeetCode hot100+面试高频
算法·leetcode·面试
金士顿14 分钟前
Ethercat耦合器添加的IO导出xml 初始化IO参数
android·xml·java
俊俊谢20 分钟前
【浮点运算性能优化】浮点转定点算法库的多平台通用移植方案与性能评估优化
算法·性能优化·c·浮点转定点·多平台移植
7哥♡ۣۖᝰꫛꫀꪝۣℋ20 分钟前
Spring WebMVC及常用注释
java·数据库·spring
电饭叔21 分钟前
Luhn算法与信用卡识别完善《python语言程序设计》2018版--第8章14题利用字符串输入作为一个信用卡号之三
android·python·算法
曹牧22 分钟前
C#:Dictionary类型数组
java·开发语言·c#
躺着听Jay22 分钟前
【1267 - Illegal mix of collations 】mysql报错解决记录
java·linux·前端