ArrayList实现

时间:2019-10-23
本文章向大家介绍ArrayList实现,主要包括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);
		}
	}
	
}

  

原文地址:https://www.cnblogs.com/SharkChilli/p/11727124.html