【java】数组线性表的实现
来源:互联网 发布:kindle软件更新 编辑:程序博客网 时间:2024/09/21 09:27
public interface mylist<E> {public void add(E e);public void add(int index,E e);public void clear();public boolean contains(E e);public E get(int index);public int indexOf(E e);public boolean isEmpty();public int lastIndexOf(E e);public boolean remove(E e);public E remove(int index);public Object set(int index,E e);public int size();}
public abstract class myabstractlist<E> implements mylist<E>{protected int size = 0;protected myabstractlist(){}protected myabstractlist(E[] objects){for(int i = 0;i<objects.length;i++)add(objects[i]);} public void add(E e){ add(size,e); } public boolean isEmpty(){ return size == 0; } public int size(){ return size; } public boolean remove(E e){ if(indexOf(e)>=0){ remove(indexOf(e)); return true; } else {return false;} }}
public class myarraylist<E> extends myabstractlist<E>{public static final int INITIAL_CAPACITY = 16;private E[]data = (E[])new Object[INITIAL_CAPACITY];public myarraylist(){}public myarraylist(E[] objects){for(int i = 0;i<objects.length;i++)add(objects[i]);}public void add(int index,E e){ensureCapacity();for(int i = size-1;i>=index;i--)data[i+1] = data[i];data[index] = e;size++;}private void ensureCapacity(){if(size>=data.length){E[] newData = (E[])(new Object[size*2+1]);System.arraycopy(data,0,newData,0,size);}}public void clear(){data = (E[])new Object[INITIAL_CAPACITY];size = 0;}public boolean contains(E e){for(int i = 0;i<size;i++){if(e.equals(data[i]))return true;}return false;}public E get(int index){return data[index];}public int indexOf(E e){for(int i = 0;i<size;i++){if(e.equals(data[i]))return i;}return -1;}public int lastIndexOf(E e){for(int i = size-1;i>=0;i--){if(e.equals(data[i]))return i;}return -1;}public E remove(int index){E e = data[index];for(int j = index;j<size-1;j++)data[j]= data[j+1];data[size-1] = null;size--;return e;}public E set(int index,E e){E old = data[index];data[index] = e;return old;}public String toString(){StringBuilder result = new StringBuilder("[");for(int i = 0;i<size;i++){result.append(data[i]);if(i<size-1)result.append(",");}return result.toString()+"]";}public void trimToSize(){if(size!=data.length){E[] newData = (E[])(new Object[size]);System.arraycopy(data,0,newData,0,size);data = newData;}}}
0 0
- 【java】数组线性表的实现
- 数据结构-线性表的数组实现-Java
- java 数组实现线性表
- 线性表的数组实现
- java实现线性表(数组实现)
- 线性表的java实现(数组,链表)
- java 用动态数组实现线性表
- java数据结构:线性表之数组实现
- 线性表-数组实现
- 线性表数组实现
- MyArrayList(数组线性表的实现)
- 数组实现线性表的顺序存储
- C++用数组实现的线性表
- [转载] 线性表的数组实现
- 数组线性表ArrayList的内部实现
- 用数组实现的线性表
- 基于数组对线性表的实现
- 线性表的数组实现方式
- 浅谈Overload和Override的区别
- centos 下面smplayer的安装--借用第三方源rpmforge
- NIO Selector
- 深入浅出游戏算法(3)-lua脚本(6)
- 2013.10u-boot移植之SD保存环境变量
- 【java】数组线性表的实现
- 源编码,执行编码,乱码问题
- 博客首记
- Perl多线程Parallel::ForkManager
- 成功必备的九种能力
- 线程堆栈
- 写给自己
- 献给对爱情迷茫,对出身抱怨的你(转)
- 显示计算机特殊文件夹