首页 > 编程语言 > java 复杂对象数组练习 添加和遍历

java 复杂对象数组练习 添加和遍历

时间:2022-10-22 16:32:07浏览次数:80  
标签:arr 遍历 java 数组 int id Student public

      Javabean

package test_4;

public class Student { private int id;

private String name;

private int age;

public Student() {

}

public Student(int id, String name, int age) {

this.id = id;
this.name = name;
this.age = age;

}

public int getId() { return id; }

public void setId(int 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; }



                              Javatest  (main)

package test_4;

public class studentTest {

public static void main(String[] args) {

//创建一个数组,用来存储学生对象。
Student[] arr = new Student[3];


//创建学生对象并且把对象添加到数组当中。

Student stu1 = new Student(1,"zhangsan",23);
Student stu2 = new Student(2,"lisi",24);
Student stu3 = new Student(3,"wangwu",25);

arr[0] = stu1;
arr[1] = stu2;
arr[2] = stu3;

//要求1. 再添加一个学生,并判断是否是唯一性的。
//分析: 先把题拆解了。
//先想办法添加一个学生。

Student stu4 = new Student(4,"zhaoliu",26);

//把stu4 添加到数组里面,有两种情况,1.数组已满 (这种情况只能再创建一个新数组 长度等于旧数组+1). 2.数组未满。

//需要注意:唯一性的判断 : 要是已经存在就不用添加了,不存在才添加,所以要先判断。所以 先创建一个方法来判断 是否

boolean flag = contains(arr,stu4.getId());

if(flag) {
System.out.println("当前id重复,请修改后再添加");

}else {
int count = getCount(arr);
if(count == arr.length) {
//已经满了
//1.创建一个新数组 大小等于老数组+1
//2.把老数组的内容复制过来。
Student[] newArr = creatNewArr(arr);

newArr[count] = stu4;

printArr(newArr);

}else {

arr[count] = stu4;//注意:getCount 返回的值 =2 有两种意思,1.表示数组里面有2个元素,
// 2.表示下一次添加数组就是添加到2索引的位置

printArr(arr);
}

}


}

//创建方法是

// 1.我要干什么?唯一性判断 // 2.要完成这个事情 我需要怎么做 要数组和id // 3.要不要返回值 要返回值。 public static boolean contains(Student[] arr,int id) { for(int i = 0 ; i<arr.length ; i++) {

    //依次获得数组里面的学生信息
Student stu = arr[i];

if(stu != null) {

//比较的是id 所以需要获得id
int sid = stu.getId();

//比较

if(sid == id) {
return true; //注意因为是和每一个数组的id进行比较 所以应该循坏完之后再返回false。
}

return false;
}
}

}


public static int getCount(Student[] arr) {

int count = 0 ;
for(int i = 0 ;i<arr.length ; i++) {
if(arr[i] != null) {
count++;
}
}
return count;
}


//1.创建一个新数组 大小等于老数组+1
//2.把老数组的内容复制过来。

public 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;

}

public static void printArr(Student[] arr) {
for (int i = 0 ; i < arr.length ; i++) {
Student stu = arr[i];
if(stu != null) {
System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
}
}
}

}



      





标签:arr,遍历,java,数组,int,id,Student,public
From: https://blog.51cto.com/u_15831800/5786008

相关文章

  • java第四讲-继承与多态-InheritsAndPolymorphismSourceCode
    1.继承条件下类的访问权限public:外界可自由访问;private:外界不可访问;protected:同一包中的子类都可以访问,另一包中的子类(派生于同一个父类)也可以访问;default:如果......
  • java---泛型(Generics)
    泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合。什么是泛型泛型的本质就是“数据类型的参数化”,处理的数据类型不是固定的,而是可以作为参数传入,可以把“泛......
  • 树的遍历
    前序遍历口诀:根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。若二叉树为空则结......
  • 【JavaScript】事件的冒泡,委派,绑定和传播
    文章目录​​冒泡事件​​​​特性:​​​​阻止冒泡事件的两种方法​​​​cancelBubble​​​​stopPropagation()​​​​委派事件​​​​特性​​​​获取点击的元素​......
  • java SPI机制与双亲委派机制的不同
     1、双亲委派机制1.1定义当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。如果父类为空,交给boot......
  • java第三讲-类与对象-ClassAndObjectSourceCode
    1.通过对象变量使用对象  1)直接调用类的方法;(添加和调用get()方法取值)  2)存取类的字段;(设置公有字段)publicclassClassAndObjectTest{publicstaticvoidm......
  • Java的接口和抽象类到底哪个更抽象
    Java的接口和抽象类到底哪个更抽象抽象类抽象方法是是不完整的方法,,它只是进行了声明,没有具体的方法实现逻辑,具体的实现逻辑由子类来完成。包含抽象方法的类是抽象类,通过ab......
  • Java不能继承多个类?内部类帮你解决这个问题
    Java不能继承多个类?内部类帮你解决这个问题内部类在Java中也是一个很重要的概念,很多类中都存在内部类。内部类与内部类的对应的是外围类,内部类可以操作外围类的所有成员,p......
  • 定义一个大小为30的整型一维数组x,并将该数组的前2个元素初始化为1,使用循环语句将Fibon
    定义数组和数组元素赋值1、定义一个大小为30的整型一维数组x,并将该数组的前2个元素初始化为1,使用循环语句将Fibonacci(菲波那契)数列的前30项依次赋给x[0]、x[1]、x[2]……......
  • 【Java SE】枚举类和注解
    1.枚举类的使用当类的对象由有限个,确定的时候,我们称这种类为枚举类。当需要定义一组常量时,建议使用枚举类。而当枚举类中只有一个对象时,可以使用单例模式。1.1enmu关键......