java动态数组_Java动态数组

packagegenerics;importjava.util.Arrays;//泛型类 -> 动态数组

public class DynamicArray{//field

private static final int DEFAULT_CAPACITY = 10;private intsize;privateObject[] elementData;//constructor 构造函数

publicDynamicArray(){this.elementData = newObject[DEFAULT_CAPACITY];

}//method//确保数组有足够的长度

private void ensureCapacity(intminCapacity){int oldCapacity =elementData.length;if(oldCapacity >=minCapacity){return;

}int newCapacity = oldCapacity * 2;if(newCapacity

newCapacity=minCapacity;

}

elementData=Arrays.copyOf(elementData, newCapacity);

}//添加元素

public voidadd(E e){

ensureCapacity(size+ 1);

elementData[size++] =e;

}//搜索索引

public E get(intindex){return(E)elementData[index];

}//返回大小

public intsize(){returnsize;

}//设置元素

public E set(intindex, E element){

E oldValue=get(index);

elementData[index]=element;returnoldValue;

}//泛型方法//类型参数为T,放在返回类型前面

public static intindexOf(T[] arr, T elm){for(int i = 0; i < arr.length; i++){if(arr[i].equals(elm)){returni;

}

}return -1;

}//通配符 ?// extends E> -> 有限通配符,匹配E或E的某个子类型,用于实例化类型参数,未知具体类型

public void addAllWailcard(DynamicArray extends E>c){for(int i = 0; i < c.size; i++){

add(c.get(i));

}

}// -> 用于定义类型参数,声明一个类型参数T,可放在泛型类定义中类名的后面、泛型方法返回值前面

public void addAll(DynamicArrayc){for(int i = 0; i < c.size; i++){

add(c.get(i));

}

}// super E> -> 超类型通配符,可以更灵活地写入

public void copyTo(DynamicArray super E>dest){for(int i = 0; i < size; i++){

dest.add(get(i));

}

}

@OverridepublicString toString(){returnArrays.toString(elementData);

}//__main__

public static voidmain(String[] args){

DynamicArray da = new DynamicArray();

da.add("Hello");

da.add("Hola");

da.add("你好");

System.out.println(da.get(2));

System.out.println(da.size());

System.out.println(da.set(1, "konnichiwa"));

System.out.println(da.get(1));

System.out.println(indexOf(new Integer[]{1, 3, 4} , 1));

System.out.println(indexOf(new String[]{"Hello", "Hola", "你好"} , "hola"));

System.out.println(indexOf(da.elementData,"你好"));

System.out.println(da.toString());

DynamicArray added= newDynamicArray();

added.add("Hola");

added.add("Aniaseyou");

da.addAllWailcard(added);

System.out.println(da.toString());

da.addAll(added);

System.out.println(da.toString());

DynamicArray ints = new DynamicArray();

ints.add(100);

ints.add(34);

DynamicArray nums = new DynamicArray();

ints.copyTo(nums);

System.out.println(ints.toString());

System.out.println(nums);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值