Java对象数组的添加、删除和遍历代码示例

 更新时间:2024年04月01日 10:00:25   作者:2301_80250542  
在Java编程中,我们经常需要对数据结构进行遍历操作,并根据业务需求删除部分元素,这篇文章主要给大家介绍了关于Java对象数组的添加、删除和遍历的相关资料,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

前言

创建一个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的索引
    }
}

结果

附:Java根据姓名删除对象数组中的元素

可以使用Java中的ArrayList类来实现根据姓名删除对象数组中的元素,具体实现步骤如下:

  • 创建一个ArrayList对象,将对象数组中的元素添加到该ArrayList中。
  • 遍历ArrayList,找到需要删除的元素的索引。
  • 使用ArrayList.remove()方法删除指定索引的元素。
  • 将ArrayList转换为数组并返回。

代码示例:

import java.util.ArrayList;

public class RemoveObjByName {
    public static void main([string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)[] args) {
        // 创建对象数组
        Person[] personArr = {
                new Person("Alice", 18),
                new Person("Bob", 20),
                new Person("Charlie", 22)
        };

        // 将对象数组转换为ArrayList
        ArrayList<Person> personList = new ArrayList<>();
        for (Person person : personArr) {
            personList.add(person);
        }

        // 根据姓名删除元素
        [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) name = "Bob";
        for (int i = 0; i < personList.size(); i++) {
            if (personList.get(i).getName().equals(name)) {
                personList.remove(i);
                break;
            }
        }

        // 将ArrayList转换为数组并返回
        Person[] newPersonArr = personList.toArray(new Person[personList.size()]);
        for (Person person : newPersonArr) {
            System.out.println(person.getName() + ", " + person.getAge());
        }
    }
}

class Person {
    private [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) name;
    private int age;

    public Person([string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) name, int age) {
        this.name = name;
        this.age = age;
    }

    public [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

总结 

到此这篇关于Java对象数组的添加、删除和遍历的文章就介绍到这了,更多相关Java对象数组添加、删除和遍历内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Java中使用Preferences 的 API设置用户偏好

    Java中使用Preferences 的 API设置用户偏好

    这篇文章主要介绍了Java中使用Preferences 的 API设置用户偏好的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Java annotation元注解原理实例解析

    Java annotation元注解原理实例解析

    这篇文章主要介绍了Java annotation元注解原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java多线程之同步工具类Exchanger

    Java多线程之同步工具类Exchanger

    这篇文章主要介绍了Java多线程之同步工具类Exchanger,Exchanger 是一个用于线程间协作的工具类,Exchanger用于进行线程间的数据交换,它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据,下面来看看具体内容吧
    2021-10-10
  • Mybatis操作多数据源的实现

    Mybatis操作多数据源的实现

    本文主要介绍了Mybatis操作多数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Spring?Security权限想要细化到按钮实现示例

    Spring?Security权限想要细化到按钮实现示例

    这篇文章主要为大家介绍了Spring?Security权限想要细化到按钮实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • springboot application.yml使用@@pom文件配置问题

    springboot application.yml使用@@pom文件配置问题

    这篇文章主要介绍了springboot application.yml使用@@pom文件配置问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Elasticsearch中store field与non-store field的区别说明

    Elasticsearch中store field与non-store field的区别说明

    这篇文章主要介绍了Elasticsearch中store field与non-store field的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • maven项目错误:找不到或无法加载主类?XXX问题

    maven项目错误:找不到或无法加载主类?XXX问题

    这篇文章主要介绍了maven项目错误:找不到或无法加载主类?XXX问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 详解Java二叉排序树

    详解Java二叉排序树

    这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉排序树的插入和查找等,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Java模版引擎Freemarker

    Java模版引擎Freemarker

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
    2016-04-04

最新评论

?


http://www.vxiaotou.com