数据结构(java)----MyArrayList
来源:互联网 发布:网络增值业务许可证 编辑:程序博客网 时间:2024/06/11 03:29
最近看的书叫“数据结构与算法分析,java语言描述”,里面有讲到各种数据结构的实现。今天先写出最简单的一部分,ArrayList的实现
import java.util.Iterator;public class MyArrayList<T> implements Iterable<T>{ private static final int DEFAULT_CAPACIY = 10; private int theSize; private T[] theItems; public MyArrayList(){doClear();} public void clear(){doClear();} public void doClear(){theSize = 0 ; ensureCapacity(DEFAULT_CAPACIY);} public int size(){ return theSize;} public boolean isEmpty(){return theSize == 0;} public void trimToSize(){ensureCapacity(size());}//删除掉没有用的剩余空间,只把有用的部分留下来 public T get(int idx){ if(idx < 0 || idx >=size()) throw new ArrayIndexOutOfBoundsException(); return theItems[idx]; } public T set(int idx, T newVal){ if(idx < 0 || idx >=size()) throw new ArrayIndexOutOfBoundsException(); T old = theItems[idx]; theItems[idx] = newVal; return old; } public void ensureCapacity(int newCapacity){//对list进行扩充,满足动态性 if(newCapacity < size()) return; T[] old = theItems; theItems = (T[])new Object[newCapacity]; for(int i = 0 ; i < size(); i++) theItems[i] = old[i]; } public boolean add(T x){add(size(),x);return true;} public void add(int idx,T 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 T remove(int idx){ T removeItem = theItems[idx]; for(int i = idx ; i < theSize ; i++) theItems[i] = theItems[i+1]; theSize--; return removeItem; } @Override public Iterator<T> iterator() { // TODO Auto-generated method stub return new ArrayListIterator(); } //用常规内部类构造出一个迭代器 private class ArrayListIterator implements Iterator<T> { private int current = 0; @Override public boolean hasNext() { // TODO Auto-generated method stub return current < theSize; } @Override public T next() { // TODO Auto-generated method stub if(!hasNext()) throw new ArrayIndexOutOfBoundsException(); return theItems[current++]; } @Override public void remove() { // TODO Auto-generated method stub MyArrayList.this.remove(--current); } }}
0 0
- 数据结构(java)----MyArrayList
- Java数据结构笔记3——MyArrayList
- Java MyArrayList 示例
- MyArrayList(Day13)
- MyArrayList
- MyArrayList
- java基于StringBuilder自己实现myArrayList
- MyArrayList(数组线性表的实现)
- MyArrayList代码
- JAVA学习笔记20——String3_实践环节:构造自己的MyArrayList
- Random、 LinkedList 、Collections 、Arrays 、MyArrayList 的部分应用(util包)
- 表--MyArrayList的实现
- 自定义动态数组MyArrayList
- java数据结构(一)
- Java数据结构(栈篇)
- Java数据结构(链表篇)
- 数据结构--链表(java)
- 数据结构--栈(java)
- 显示加载dll
- Android Wi-Fi — IP forward — ndc — netd
- ajax中的小细节
- Android 学习杂记
- HighAvailability
- 数据结构(java)----MyArrayList
- Linux-信号机制详解(一)
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake
- 读书笔记-现代操作系统-7多媒体操作系统-7.5多媒体进程调度
- 入驻博客
- 初识UDP编程
- PullToRefreshListView原理解析(一)
- CSS 样式的重置 --设计一款属于自己的重置样式
- 47. Permutations II