底层结构为数组;
- import java.util.Iterator;
- public class MyArrayList<E> implements Iterable<E>{
- public static int InitSize=2;
- private Object[] elementData=new Object[InitSize];
- private static int size;
- public <E> void add(E e){
- if(size>=InitSize){//如果超出集合的大小,则每次扩充1.5倍
- InitSize=InitSize+(InitSize/2==0?1:InitSize/2);
- Object[] elementTemp=new Object[InitSize];
- System.arraycopy(elementData, 0,elementTemp , 0, size);
- elementData=elementTemp;
- }
- elementData[size]=e;
- size++;
- }
- public E get(int index){
- if(index<0 || index>=size){
- throw new ArrayIndexOutOfBoundsException("出错");
- }
- return (E)elementData[index];
- }
- public static int getSize(){
- return size;
- }
- //实现Iterable接口
- //使用Iterator进行遍历元素
- //不实现的话该类就无法进行增强for循环的操作
- public Iterator<E> iterator() {
- return new Itr();
- }
- class Itr implements Iterator<E>{
- int index=0;
- public boolean hasNext() {
- return index<size;
- }
- public E next() {
- return get(index++);
- }
- public void remove() {
- };
- }
- }
- public class Test {
- public static void main(String[] args) {
- MyArrayList<String> list=new MyArrayList<String>();
- list.add("wwww我");
- list.add("a");
- list.add("为");
- list.add("人");
- list.add("g");
- list.add("盘");
- list.add("才v");
- System.out.println("集合元素个数:"+list.getSize());
- System.out.println("集合大小:"+list.InitSize);
- for(Object s:list){
- System.out.println(s);
- }
- }
- /**运行结果:
- 集合元素个数:7
- 集合大小:9
- wwww我
- a
- 为
- 人
- g
- 盘
- 才v
- */
- }