当前位置:   article > 正文

Java 数组存储引用对象实例(对学生数组进行增删改查)_主方法中定义一个student数组,生成对象存入其中

主方法中定义一个student数组,生成对象存入其中

一、定义学生类

  1. pulic class Student{
  2. public String name;
  3. public int age;
  4. public String phone;
  5. public Student() {
  6. }
  7. public Student(String name, int age, String phone) {
  8. this.name = name;
  9. this.age = age;
  10. this.phone = phone;
  11. }
  12. public void info(){
  13. System.out.println("我叫:"+name+",今年:"+age+",电话是:"+phone);
  14. }
  15. }

二、书写操作方法

  1. public class ArrayManage {
  2. // 声明一个学生类数组
  3. Student[] stus = new Student[3];
  4. // 实际长度 即数组中学生对象的个数
  5. int size=0;
  6. // 追加学生对象信息
  7. public void addStudent(Student stu){
  8. // 当添加的元素等于数组的实际长度时,给数组进行扩容
  9. if(stus.length == size){
  10. stus = Arrays.copyOf(stus,stus.length+2);
  11. }
  12. // 将学生对象添加到数组中
  13. stus[size] = stu;
  14. // 添加成功 实际长度+1
  15. size++;
  16. }
  17. // 查找
  18. public int search(String name){
  19. // 根据姓名查找学生所在的下标
  20. int index = -1;
  21. for (int i = 0; i < size; i++) { // size代表实际人数
  22. Student s = stus[i]; // 获取第i个学生对象
  23. if(s.name.equals(name)){ // 名称对比,如果一致就是找到了
  24. index = i;
  25. // 查找到跳出循环
  26. break;
  27. }
  28. }
  29. return index;
  30. }
  31. // 插入
  32. public boolean add(String name,Student stu){
  33. // 将新增学生对象 插入到指定学生之前
  34. int index = search(name);
  35. // 找到指定学生,将数组实际长度进行+1处理
  36. if (index!=-1){
  37. stus = Arrays.copyOf(stus,stus.length+1);
  38. for (int i = size-1; i >= index; i--) {
  39. stus[i+1] = stus[i];
  40. }
  41. stus[index] =stu;
  42. size++;
  43. return true;
  44. }else {
  45. return false;
  46. }
  47. }
  48. // 删除
  49. public boolean delete(String name){
  50. // 根据名字查询是否含有此人
  51. int index = search(name);
  52. if(index!=-1){ // [1,2,3,4] size =4 3
  53. for (int i = index; i < size-1; i++) {
  54. stus[i] = stus[i+1]; // 往前移动一位
  55. }
  56. stus[size-1]=null; // 最后一位为null
  57. size--; // 实际人数-1
  58. return true;
  59. }else{
  60. return false;
  61. }
  62. }
  63. // 排序
  64. public void paiXu(){
  65. for (int i = 1; i < size; i++) {
  66. for (int j = 0; j <size-i; j++) {
  67. // 根据学生的年龄进行排序
  68. if(stus[j].age > stus[j+1].age){
  69. Student temp = stus[j];
  70. stus[j] = stus[j+1];
  71. stus[j+1] = temp;
  72. }
  73. }
  74. }
  75. }
  76. public void dianming(){
  77. for (int i = 0; i < size; i++) {
  78. stus[i].info();
  79. }
  80. }
  81. }

三、测试

  1. public class Test{
  2. public static void main(String[] args) {
  3. ArrayManage manage = new ArrayManage();
  4. // 添加学生对象
  5. manage.addStudent(new Student("张三",18,"15612312312"));
  6. manage.addStudent(new Student("李四",20,"15612312312"));
  7. manage.addStudent(new Student("王五",19,"15612312312"));
  8. manage.addStudent(new Student("张麻子",17,"15612312312"));
  9. // 遍历
  10. manage.dianming();
  11. System.out.println("===================================================");
  12. // 查询
  13. int index = manage.search("李四");
  14. System.out.println(index);
  15. System.out.println("===================================================");
  16. // 指定位置添加对象
  17. manage.add("李四",new Student("赵六",21,"123123123123"));
  18. manage.dianming();
  19. System.out.println("===================================================");
  20. // 删除
  21. manage.delete("李四");
  22. manage.dianming();
  23. System.out.println("===================================================");
  24. // 根据年龄进行排序
  25. manage.paiXu();
  26. manage.dianming();
  27. }
  28. }

四、结果展示

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/769128
推荐阅读
相关标签
  

闽ICP备14008679号