import java.util.Arrays;public class VectorV<T>{ private static final long serialVersionUID = 1L;
public int eCount=0;//元素数量
public Object[] data;//存储数据的数组
public VectorV(){ data=new Object[13];//初始化容量13 } public VectorV(int capacity){ data=new Object[capacity];//有初始化容量的构造方法 } //添加元素的方法 public void addElement(T t){ autoCapacity(eCount+1);//是否扩容 data[eCount++]=t;//往数组中加入元素 }
public void autoCapacity(int capacity){ int newCapacity=0; if(capacity>eCount){ newCapacity=capacity; data=Arrays.copyOf(data, newCapacity); } } public T get(int index){ if(index>=eCount){ System.out.println("索引超出范围!"); } return (T) data[index]; } public int size(){ return eCount; }
public static void main(String[] args) { VectorV<Integer> v=new VectorV<Integer>(); for (int i = 0; i < 14; i++) { v.addElement(i); } System.out.println(v.size()); for (int i = 0; i < v.size(); i++) { System.out.print(v.get(i)+" "); } } } 打印输出: 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13
jdk的目录下有一个src.zip 里面就是Java的源代码如果你不知道某个类在哪个包,可以查看Java API Doc
仅提供思路:定义一个Object[]数组,然后调用add方法时先判断这个数组是不是满了如果满了就通过Arrays.copyOf()创建一个更大的数组;
import java.util.Arrays;public class VectorV<T>{ private static final long serialVersionUID = 1L;
public int eCount=0;//元素数量
public Object[] data;//存储数据的数组
public VectorV(){
data=new Object[13];//初始化容量13
}
public VectorV(int capacity){
data=new Object[capacity];//有初始化容量的构造方法
}
//添加元素的方法
public void addElement(T t){
autoCapacity(eCount+1);//是否扩容
data[eCount++]=t;//往数组中加入元素
}
public void autoCapacity(int capacity){
int newCapacity=0;
if(capacity>eCount){
newCapacity=capacity;
data=Arrays.copyOf(data, newCapacity);
}
}
public T get(int index){
if(index>=eCount){
System.out.println("索引超出范围!");
}
return (T) data[index];
}
public int size(){
return eCount;
}
public static void main(String[] args) {
VectorV<Integer> v=new VectorV<Integer>();
for (int i = 0; i < 14; i++) {
v.addElement(i);
}
System.out.println(v.size());
for (int i = 0; i < v.size(); i++) {
System.out.print(v.get(i)+" ");
}
}
}
打印输出:
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13