对象数组的添加,删除和遍历.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的索引
    }
}

结果

相关推荐
古希腊掌管学习的神几秒前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人4 分钟前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香5 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
忘梓.1 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(3)
算法·动态规划
Evand J1 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB1 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
Ronin3051 小时前
11.vector的介绍及模拟实现
开发语言·c++
计算机学长大白2 小时前
C中设计不允许继承的类的实现方法是什么?
c语言·开发语言
suweijie7682 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿3 小时前
List深拷贝后,数据还是被串改
java