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

      

  • 相关阅读:
    AE 线编辑
    ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
    AE二次开发技巧之撤销、重做
    ArcEngine数据编辑--选择要素
    java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
    MVC开发模式详解
    数据库设计中常见表结构的设计技巧
    Eclipse 保存文件时自动格式化代码
    优化你的java代码性能
    Hibernate 与mybatis的区别
  • 原文地址:https://www.cnblogs.com/SharkChilli/p/11727124.html
Copyright © 2011-2022 走看看