zoukankan      html  css  js  c++  java
  • ArrayList类的实现

    package other;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.NoSuchElementException;
    
    /*
     * ArrayList泛型类的实现
     */
    public class MyArrayList<AnyType> implements Iterable<AnyType> {
    
    	private static final int DEFAULT_CAPACITY = 10;
    
    	private int theSize;
    	private AnyType[] theItems;
    
    	public MyArrayList() {
    		clear();
    	}
    
    	public void clear() {
    		theSize = 0;
    		ensureCapacity(DEFAULT_CAPACITY);
    	}
    
    	private int size() {
    		return theSize;
    	}
    
    	public boolean isEmpty() {
    		return size() == 0;
    	}
    
    	public void trimToSize() {
    		ensureCapacity(size());
    	}
    
    	public AnyType get(int index) {
    		if (index < 0 || index >= size()) {
    			throw new ArrayIndexOutOfBoundsException();
    		}
    		return theItems[index];
    	}
    
    	private AnyType set(int index, AnyType newVal) {
    		if (index < 0 || index >= size()) {
    			throw new ArrayIndexOutOfBoundsException();
    		}
    		AnyType old = theItems[index];
    		theItems[index] = newVal;
    		return old;
    	}
    
    	public void ensureCapacity(int newCapacity) {
    		if (newCapacity < theSize) {
    			return;
    		}
    
    		AnyType[] old = theItems;
    		theItems = (AnyType[]) new Object[newCapacity];
    		for (int i = 0; i < size(); i++) {
    			theItems[i] = old[i];
    		}
    	}
    
    	public void add(int index, AnyType x) {
    		if (theItems.length == size()) {
    			ensureCapacity(size() * 2 + 1);
    		}
    		for (int i = theSize; i < index; i--) {
    			theItems[i] = theItems[i - 1];
    		}
    		theItems[index] = x;
    
    		theSize++;
    	}
    
    	public boolean add(AnyType x) {
    		add(size(), x);
    		return true;
    	}
    
    	public AnyType remove(int index) {
    		AnyType removedItem = theItems[index];
    		for (int i = index; i < size() - 1; i++) {
    			theItems[i] = theItems[i + 1];
    		}
    		theSize--;
    		return removedItem;
    	}
    
    	public Iterator<AnyType> iterator() {
    
    		return new ArrayListIterator();
    	}
    
    	private class ArrayListIterator implements Iterator<AnyType> {
    
    		private int current = 0;
    
    		public boolean hasNext() {
    
    			return current < size();
    		}
    
    		public AnyType next() {
    
    			if (!hasNext()) {
    				throw new NoSuchElementException();
    			}
    			return theItems[current++];
    		}
    
    		public void remove() {
    			MyArrayList.this.remove(--current);
    		}
    
    	}
    
    }
    
  • 相关阅读:
    02_5if switch分支与循环语句
    02_4运算符
    02_3程序格式
    Shell脚本调用ftp上传文件
    02_2数据类型转换
    02_1标识符_关键字_数据类型
    01_3Java Application初步
    01_2Java开发环境的下载 安装 配置
    Mac 安装MySQL
    用 Homebrew 带飞你的 Mac
  • 原文地址:https://www.cnblogs.com/yoyohong/p/5651808.html
Copyright © 2011-2022 走看看