ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-数组列表插入方法

2019-11-22 05:01:02  阅读:233  来源: 互联网

标签:for-loop arrays java methods insert


我正在尝试在数组中插入一个元素.我的方法应该将数组的大小增加1并将元素插入适当的位置.问题:它将元素添加到适当的位置并扩展了数组,但它摆脱了该位置的原始元素并插入了null.
我的代码:

 public void insert(int point, Person person){
    Person [] newList = new Person[this.size()+1];
    for(int i = 0; i < point; i++){
      newList[i] = list[i];
    }
    newList[point] = person;

    for(int i = point+1; i<this.size(); i++){
      newList[i] = list[i];

    }
   this.list = new Person[this.size()+1];
    for(int i = 0; i <this.size(); i++){
      list[i] = newList[i];
    }
  }

数组输出:

> FBArrayList name = new FBArrayList()
 [DrJava Input Box]
> name.list[0] = new Person("Emma", 7)
Person@20a3d02a
> name.list[1] = new Person("Daniel", 8)
Person@6e8a93de
> name.list[2] = new Person("Bradley", 9)
Person@327556d1
> name.list[3] = new Person("Monica", 1)
Person@3d886c83
> name.list[4] = new Person("Connor", 2)
Person@76b41f9c
> name.list[5] = new Person("Fedor", 3)
Person@462a5d25
> name.insert(3, new Person("David", 4))
> for(int i = 0; i<7; i++){
System.out.println(name.list[i].getName());
}
Emma
Daniel
Bradley
David
Connor
Fedor
java.lang.NullPointerException
> name.list
{ Person@20a3d02a, Person@6e8a93de, Person@327556d1, Person@1d1a8b9, Person@76b41f9c, Person@462a5d25, null }

关于为什么我会失去Monica或如何解决它的任何建议.

解决方法:

public void insert(int point, Person person){
  Person [] newList = new Person[this.size()+1];
  for(int i = 0; i < point; i++){
    newList[i] = list[i];
  }
  newList[point] = person;

  // this part copies the remainder of the original list to the new list after
  // your inserted entry
  for(int i = point; i < this.size(); i++){
    newList[i+1] = list[i];

  }

  this.list = newList;
}

标签:for-loop,arrays,java,methods,insert
来源: https://codeday.me/bug/20191122/2057415.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有