qwuiop789 发表于 2015-3-28 23:08

如何用java语言创建不定长动态数组

public class intArray {
private int theSize=0;;
private int a_int[]={};
public intArray(int a[]){
this.a_int=a;
this.theSize=a.length;
}
public intArray(){
this.theSize=0;
}

public int getSize(){
return this.theSize;
}
public int getAt(int nIndex){
return this.a_int;
}
public void SetAt(int nIndex , int newElement){
this.a_int =newElement;
}
public void add(int nIndex){
int old[] = this.a_int;

this.a_int= new int;

for(int i =0;i
a_int= old;
}
if(this.theSize>0){
a_int=nIndex;
}else{
a_int=nIndex;
}
this.theSize++;
}
public static void main(String args[]){

intArray array = new intArray();

array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
for(int i = 0;i
System.out.println(array.getAt(i));
}

}
}



再给个任意类型的
public class myArray {
private int theSize=0;
private AnyType theItem[]=null;
public myArray(AnyType a[]){
this.theItem=a;
this.theSize=a.length;
}
public myArray(){

}
public int getSize(){
return this.theSize;
}
public AnyType get(int nIndex){
return this.theItem;
}
public void Set(int nIndex , AnyType newElement){
this.theItem =newElement;
}
public void add(AnyType newVal){
AnyType old[]=this.theItem;

this.theItem= (AnyType[]) new Object;
if(theSize!=0){
for(int i =0;i
this.theItem= old;
}
}
this.theItem=newVal;
this.theSize++;
}
public static void main(String args[]){
myArray array = new myArray();
array.add("1");
array.add("2");
array.add("3");
array.add("a");
array.add("b");
array.add("c");
for(int i =0;i
System.out.println(array.get(i));
}
}
}

qwuiop789 发表于 2015-3-28 23:12

麻烦高手将各行代码注释一下,通俗讲一下原理,谢谢!

0元元0 发表于 2015-3-28 23:16

动态数组无非就是内存拷贝,没有真正意义上的动态。ArrayList底层实现就是数组,楼主可以参考ArrayList的实现

SGC沉默 发表于 2015-3-28 23:31

你可以多设几个类和对象试试

ezhu52pj 发表于 2015-3-29 00:07

Java的数组是定长的。不定长的数组,应该需要自己实现。

qwuiop789 发表于 2015-3-29 07:55

0元元0 发表于 2015-3-28 23:16
动态数组无非就是内存拷贝,没有真正意义上的动态。ArrayList底层实现就是数组,楼主可以参考ArrayList的实 ...

不管输入多少数据,下标都不会越界,对吗?

q30416657 发表于 2015-3-30 09:41

本帖最后由 q30416657 于 2015-3-30 09:47 编辑

public class intArray
{
      private int theSize=0;      //元素个数。
      private int a_int[]={};
      //构造函数: 接受一个int型数组。
      public intArray(int a[]){
                this.a_int=a;      //this.a_int接受a的地址。
                this.theSize=a.length;//让本对象中的元素个数等于传入的数组元素个数。
      }
      //无参构造函数:
      public intArray(){
                this.theSize=0;
      }
      //获得thesize。
      public int getSize(){
                return this.theSize;
      }
      //获得指定下标的元素的值。
      public int getAt(int nIndex){
                return this.a_int;
      }
      //设置指定下标的元素的值:
      public void SetAt(int nIndex , int newElement){
                this.a_int =newElement;
      }
      //传入一个nIndex
      public void add(int nIndex){
                int old[] = this.a_int;      //让old[]指向this.a_int

                this.a_int= new int; //重新构建一个数组。 使这个数组的元素个数比原来多1;
                        
                //这里应该是吧old中的每个元素都复制给a_int中的对应元素。
                for(int i =0;i<old.length; i++)
                {
                        a_int= old;
                }
                //判断theSize的值是否大于0 如果大于0那么a_int数组中的最后一个元素值为传入的nIndex值。
                if(this.theSize>0){
                        a_int=nIndex;
                }
                //如果不大于0 那么 a_int等于传入的nIndex值;
                else{
                        a_int=nIndex;
                }
                //然后让thesize++意思应该是表明数组长度+1;
                this.theSize++;
      }
      public static void main(String args[]){

      intArray array = new intArray();                //new了一个intArray的对象

      array.add(1);                //添加一个值为1 的元素。               
      array.add(2);               
      array.add(3);
      array.add(4);
      array.add(5);       //遍历输出(数组)元素。
      for(int i = 0;i<array.getSize(); i++)
                System.out.println(array.getAt(i));
}

}
}

q30416657 发表于 2015-3-30 09:42

不是学java的可能有的地方解释的不是那么准确。

叶子嘤咛 发表于 2015-3-30 16:35

推荐使用ArrayList

叶子嘤咛 发表于 2015-3-30 16:39


public class intArray {
private int theSize=0;;
private int a_int[]={};
public intArray(int a[]){
this.a_int=a;
this.theSize=a.length;
}
public intArray(){
this.theSize=0;
}

public int getSize(){
return this.theSize;
}
public int getAt(int nIndex){
return this.a_int;
}
public void SetAt(int nIndex , int newElement){
this.a_int =newElement;
}
public void add(int nIndex){
int old[] = this.a_int;

this.a_int= new int;

for(int i =0;i
a_int= old;
}
if(this.theSize>0){
a_int=nIndex;
}else{
a_int=nIndex;
}
this.theSize++;
}
public static void main(String args[]){

intArray array = new intArray();

array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
for(int i = 0;i
System.out.println(array.getAt(i));
}

}
}



再给个任意类型的
public class myArray {
private int theSize=0;
private AnyType theItem[]=null;
public myArray(AnyType a[]){
this.theItem=a;
this.theSize=a.length;
}
public myArray(){

}
public int getSize(){
return this.theSize;
}
public AnyType get(int nIndex){
return this.theItem;
}
public void Set(int nIndex , AnyType newElement){
this.theItem =newElement;
}
public void add(AnyType newVal){
AnyType old[]=this.theItem;

this.theItem= (AnyType[]) new Object;
if(theSize!=0){
for(int i =0;i
this.theItem= old;
}
}
this.theItem=newVal;
this.theSize++;
}
public static void main(String args[]){
myArray array = new myArray();
array.add("1");
array.add("2");
array.add("3");
array.add("a");
array.add("b");
array.add("c");
for(int i =0;i
System.out.println(array.get(i));
}
}
}


页: [1]
查看完整版本: 如何用java语言创建不定长动态数组