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

    import java.util.*;
    
    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);
    	}
    	
    	public int size()
    	{
    		return theSize;
    	}
    	public boolean isEmpty()
    	{
    		return theSize == 0;
    	}
    	public void trimToSize()
    	{
    		ensureCapacity(size());
    	}
    	
    	public AnyType get(int idx)
    	{
    		if(idx < 0 || idx >= size())
    			throw new ArrayIndexOutOfBoundsException();
    		return theItems[index];
    	}
    	
    	public AnyType set(int idx, AnyType newVal)
    	{
    		if(idx < 0 || idx >= size())
    			throw new ArrayIndexOutOfBoundsException();
    		AnyType old = theItems[idx];
    		theItems[idx] = 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 boolean add(AnyType x)
    	{
    		add(size(), x);
    		return true;
    	}
    	
    	public void add(int idx, AnyType x)
    	{
    		if(theItems.length == size())
    			ensureCapacity(size() * 2 + 1);
    		for(int i = theSize; i > idx; i--)
    			theItems[i] = theItems[i - 1];
    		theItems[idx] = x;
    		theSize++;
    	}
    	
    	public AnyType remove(int idx)
    	{
    		if(theItems.length < idx)
    			return;
    		AnyType removedItem = theItems[idx];
    		for(int i = idx; i < size() - 1; i ++)
    			theItems[i] = theItems[i + 1];
    		return removedItem;
    	}
    	
    	public java.util.Iterator<AnyType> iterator()
    	{
    		return new ArrayListIterator();
    	}
    	
    	private class ArrayListIterator<AnyType> implements java.util.Iterator<AnyType>
    	{
    		private int current = 0;
    		
    		public boolean hasNext()
    		{
    			return current < size();
    		}
    		
    		public AnyType next()
    		{
    			if(!hasNext())
    				throw new java.util.NoSuchElementException();
    			return theItems[current++];
    		}
    		
    		public void remove()
    		{
    			MyArrayList.this.remove(--current);
    		}
    	}
    	
    }
    

      

  • 相关阅读:
    codesmith+mysql生成代码
    遭遇笔试
    线性是一种简洁,简洁就是美
    Microsoft Kinect SDK vs PrimeSense OpenNI
    资料收集:让OpenCV使用IPP
    提纲
    在PC上安装使用Kinect
    OpenNI设置Kinect帧率,读取IR图
    cout,rather than printf
    单步调试时,getnextframe会失败。又
  • 原文地址:https://www.cnblogs.com/SharkChilli/p/11727124.html
Copyright © 2011-2022 走看看