黑马程序员技术交流社区

标题: 请问一个数组怎么扩容 [打印本页]

作者: wanmei0398    时间: 2014-10-26 09:47
标题: 请问一个数组怎么扩容
大神们!小弟最近学到数组这,有个问题,怎么样在原数组中插入一个数。

作者: void    时间: 2014-10-26 10:34
数组一个固定长度 的数据结构,一旦声明,你不能改变数组的长度。插入数据就意味着长度改变了,不能直接在原数组上操作,应该新建一个临时数组,
  1. public class Demo6 {

  2.         public static void main(String[] args) {
  3.                 String[] arr = { "a", "b", "c", "d", "e" };
  4.                 String var = "insert";
  5.                 String[] temp = new String[arr.length + 1];
  6.                 int pos = 2;
  7.                 for (int i = 0; i < pos; i++)
  8.                         temp[i] = arr[i];
  9.                
  10.                 temp[pos]=var;
  11.                
  12.                 for(int i = pos;i<arr.length;i++)
  13.                         temp[i+1] = arr[i];

  14.                 for(String str:temp)
  15.                         System.out.print(str+" ");
  16.         }

  17. }
复制代码

作者: 郑飞    时间: 2014-10-26 10:39
只能新建一个长得了
作者: 张周飞    时间: 2014-10-26 10:48
本帖最后由 张周飞 于 2014-10-26 11:04 编辑

可以动态数组扩展     int 新数组长度:原数组*3/2+1---表示原数组的一倍
然后   原数组=Arrays .copyOf(原数组, 新数组长度);  
这就是我的思路。

举个例子:
Underwear[]  Underwears=new Underwear[3];  //原数组及长度
int count; //计数器
public void add( Underwear U){
    if(count>= Underwears . length){
          //可以动态数组扩展  
          int Newlen=( Underwears . length*3)/2+1;    //新数组=原数组*3/2+1---表示原数组的一倍
          //原数组赋给新数组--然后--新数组赋给原数组  成了新的数组,
          Underwears =Arrays .copyOf(Underwears ,Newlen);   
   }
  Underwears[count]=U;
  count++;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2