ArrayList类的实现

package com.dhy.test;


import java.util.Iterator;


/**

 * @Description: TODO

 * @author: Jocean <jocean.cool@163.com>

 * @date Feb 11, 2018 8:51:20 PM

 */

public class MyArrayList<String> implements Iterable<String>

{

private static final int DEFAULT_CAPACITY = 10;


private int theSize;


private String[] theItems;


public MyArrayList()

{

doClear();

}


private void doClear()

{

theSize = 0;

ensureCapacity(DEFAULT_CAPACITY);

}


public int size()

{

return theSize;

}


public boolean isEmpty()

{

return size() == 0;

}


public void trimToSize()

{

ensureCapacity(size());

}


public String get(int idx)

{

if (idx < 0 || idx >= size())

{

throw new ArrayIndexOutOfBoundsException();

}

return theItems[idx];

}


public String set(int idx, String newVal)

{

if (idx < 0 || idx >= size())

{

throw new ArrayIndexOutOfBoundsException();

}

String old = theItems[idx];

theItems[idx] = newVal;

return old;

}


public void ensureCapacity(int newCapacity)

{

if (newCapacity < theSize)

{

return;

}


String[] old = theItems;

theItems = (String[]) new Object[newCapacity];

for (int i = 0; i < size(); i++)

{

theItems[i] = old[i];

}

}


public boolean add(String x)

{

add(size(), x);

return true;

}


public void add(int idx, String 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 String remove(int idx)

{

String removeItem = theItems[idx];

for (int i = idx; i < size(); i++)

{

theItems[i] = theItems[i + 1];

}

theSize--;

return removeItem;

}


@Override

public Iterator<String> iterator()

{

return new ArrayListIterator();

}


private class ArrayListIterator implements Iterator<String>

{

private int current = 0;


@Override

public boolean hasNext()

{

return current < size();

}


@Override

public String next()

{

// TODO Auto-generated method stub

if (!hasNext())

{

throw new java.util.NoSuchElementException();

}

return theItems[current++];

}


public void remove()

{

MyArrayList.this.remove(--current);

}

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值