027_自己实现一个ArrayList
生活随笔
收集整理的這篇文章主要介紹了
027_自己实现一个ArrayList
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.util.Arrays;/*** 自定義ArrayList*/
public class MyArrayList {private Object[] elementData = {};private int size;/*** 構造方法*/public MyArrayList() { }/*** 數組大小* @return*/public int size() {return size;}/*** 數組是否為空* @return*/public boolean isEmpty() {return size == 0;}/*** 擴容* @param minCapacity*/private void grow(int minCapacity) {if(minCapacity - elementData.length > 0) {int oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1);if(newCapacity - minCapacity < 0) {newCapacity = minCapacity;}elementData = Arrays.copyOf(elementData, newCapacity);}}/*** 檢測下標是否越界* @param index*/private void checkRange(int index) {if(index >= size || index < 0) {throw new IndexOutOfBoundsException();}}/*** 添加元素到末尾* @param o* @return*/public boolean add(Object o) {grow(size + 1);elementData[size++] = o;return true;}/*** 添加元素到指定位置* @param index* @param o*/public void add(int index, Object o) {if(!(index <= size && index >= 0)) {throw new IndexOutOfBoundsException();}grow(size + 1);System.arraycopy(elementData, index, elementData, index + 1, size - index);elementData[index] = o;size++;}/*** 根據下標獲取元素* @param index* @return*/public Object get(int index) {checkRange(index);return elementData[index];}/*** 刪除元素* @param index*/private void fastRemove(int index) {int numMoved = size - index - 1;if(numMoved > 0) {System.arraycopy(elementData, index + 1, elementData, index, numMoved);}elementData[--size] = null;}/*** 根據下標刪除元素* @param index* @return*/public Object remove(int index) {checkRange(index);Object oldValue = get(index);fastRemove(index);return oldValue;}/*** 根據元素刪除數組中的元素* @param o* @return*/public boolean remove(Object o) {if(o == null) {for(int i = 0; i < size; i++) {if(elementData[i] == null) {fastRemove(i);return true;}}}else {for(int i = 0; i < size; i++) {if(o.equals(elementData[i])) {fastRemove(i);return true;}}}return false;}
}
?
總結
以上是生活随笔為你收集整理的027_自己实现一个ArrayList的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 026_使用eclipse生成hashC
- 下一篇: 028_自己实现一个LinkedList