自定义的ArrayList
2016-04-04 16:41
471 查看
//MyList接口 import java.util.Collection; public interface MyList<T>{ boolean add(T t); boolean addAll(Collection<? extends T> c); boolean remove(T t); Object get(int index); boolean isEmpty(); int size(); } //实现MyList接口 import java.util.Arrays; import java.util.Collection; public class MyArrayList<T> implements MyList<T> { private Object[] elementData; private int size = 0; public MyArrayList() { this(10); } public MyArrayList(int initialCapacity) { elementData = new Object[initialCapacity]; } public void ensureCapacity(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { int newCapacity = (minCapacity * 3) / 2 + 1; if (minCapacity > newCapacity) { newCapacity = minCapacity; } elementData = Arrays.copyOf(elementData, newCapacity); } } @Override public boolean add(T element) { ensureCapacity(size + 1); elementData[size++] = element; return true; } @Override public boolean addAll(Collection<? extends T> c) { Object[] a = c.toArray(); int numNew = a.length; ensureCapacity(size + numNew); System.arraycopy(a, 0, elementData, size, numNew); size += numNew; return numNew != 0; } @Override public boolean remove(T t) { for (int i = 0; i < size; i++) { if(t != null){ if (elementData[i].equals(t)) { int num = size - i - 1; if (num > 0) { System.arraycopy(elementData, i + 1, elementData, i, num); } elementData[--size] = null; } }else{ return false; } } return true; } @Override public Object get(int index) { for (int i = 0; i < elementData.length; i++) { if(i== index){ return elementData[index]; } } return null; } @Override public boolean isEmpty() { return size==0; } @Override public int size() { return size; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树