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);
    		}
    	}
    	
    }
    

      

  • 相关阅读:
    VC++6.0程序打开文件内存错误解决方法
    c++ vc6.0环境sp6补丁
    Net 应用程序如何在32位操作系统下申请超过2G的内存
    DataTable 排序
    VC UI 界面库
    让CSS兼容IE和Firefox的技巧集合
    两句CSS属性让点击图片链接时的虚线框消失
    一个常用的表单文本框input输入提示
    Css优先级分析
    清除浮动四种方法
  • 原文地址:https://www.cnblogs.com/SharkChilli/p/11727124.html
Copyright © 2011-2022 走看看