如何用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));
}
}
} 麻烦高手将各行代码注释一下,通俗讲一下原理,谢谢! 动态数组无非就是内存拷贝,没有真正意义上的动态。ArrayList底层实现就是数组,楼主可以参考ArrayList的实现 你可以多设几个类和对象试试 Java的数组是定长的。不定长的数组,应该需要自己实现。 0元元0 发表于 2015-3-28 23:16
动态数组无非就是内存拷贝,没有真正意义上的动态。ArrayList底层实现就是数组,楼主可以参考ArrayList的实 ...
不管输入多少数据,下标都不会越界,对吗? 本帖最后由 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));
}
}
}
不是学java的可能有的地方解释的不是那么准确。 推荐使用ArrayList
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]