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

结果

相关推荐
Yeats_Liao18 分钟前
Spring 框架:配置缓存管理器、注解参数与过期时间
java·spring·缓存
Yeats_Liao18 分钟前
Spring 定时任务:@Scheduled 注解四大参数解析
android·java·spring
码明18 分钟前
SpringBoot整合ssm——图书管理系统
java·spring boot·spring
某风吾起23 分钟前
Linux 消息队列的使用方法
java·linux·运维
xiao-xiang26 分钟前
jenkins-k8s pod方式动态生成slave节点
java·kubernetes·jenkins
网络风云27 分钟前
golang中的包管理-下--详解
开发语言·后端·golang
取址执行37 分钟前
Redis发布订阅
java·redis·bootstrap
墨楠。39 分钟前
数据结构学习记录-树和二叉树
数据结构·学习·算法
小唐C++1 小时前
C++小病毒-1.0勒索
开发语言·c++·vscode·python·算法·c#·编辑器
S-X-S1 小时前
集成Sleuth实现链路追踪
java·开发语言·链路追踪