前言
创建一个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&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&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&spm=1055.2569.3001.10083) name; private int age; public person([string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyjpzci6ndq0mdg2miwizxhwijoxnza3mzcxotm4lcjpyxqioje3mdy3njcxmzgsinvzzxjuyw1lijoid2vpegluxzy4njq1njq1in0.rrtyenmnypc7aqdoij4sbb0kkeghoyvf-bzog2egqvc&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&spm=1055.2569.3001.10083) getname() { return name; } public int getage() { return age; } }
总结
到此这篇关于java对象数组的添加、删除和遍历的文章就介绍到这了,更多相关java对象数组添加、删除和遍历内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论