java实现ArrayList顺序表
来源:互联网 发布:阿里云与阿里巴巴 编辑:程序博客网 时间:2024/06/05 14:56
import java.util.Arrays;/** * 模拟ArrayList实现自己的顺序表 *@author 莱格 */public class MyArrayList { private Object[] elementData; private int size;//容器的大小 //返回容器的大小 public int size() { return size; } //判断list是否为空 public boolean isEmpty() { return size == 0; } //初始化容器的大小 public MyArrayList(int initialCapacity) { if(initialCapacity < 0) { try { throw new Exception(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } elementData = new Object[initialCapacity]; } public MyArrayList() { this(10); } //添加元素 public void add(Object obj) { //数组扩容 if (size == elementData.length) { Object[] newArray = new Object[2*size+1]; //System.arraycopy(src, srcPos, dest, destPos, length); for (int i = 0; i < elementData.length; i++) { newArray[i] = elementData[i]; } elementData = newArray; } elementData[size++] = obj; } public void add(int index,Object obj) { rangeCheck(index);//检查索引 ensureCapacity();//数组扩容 System.arraycopy(elementData, index, elementData, index+1, size-index); elementData[index] = obj; size++; } //获得指定位置的元素 public Object get(int index) { rangeCheck(index); System.out.println(elementData[index]); return elementData[index]; } //删除指定位置的对象 public void remove(int index) { rangeCheck(index);// if(index < 0 || index >= size) {// try {// throw new Exception();// } catch (Exception e) {// // TODO Auto-generated catch block// e.printStackTrace();// } int numMoved = size-index-1; if(numMoved>0) { System.arraycopy(elementData, index+1, elementData, index, numMoved); } elementData[--size] = null;//垃圾回收 } //删除指定元素 public void remove(Object obj) { for (int i = 0; i < size; i++) { if (get(i).equals(obj)) { remove(i); } } } public Object set(int index,Object obj) { rangeCheck(index); Object oldValue = elementData[index]; elementData[index] = obj; return oldValue; } /** * 数组扩容 */ private void ensureCapacity() { if(size == elementData.length) { Object[] newArray = new Object[size*2+1]; System.arraycopy(elementData, 0, newArray, 0, elementData.length); elementData = newArray; } } /** * @param index */ private void rangeCheck(int index) { if (index<0 || index >= size) { try { throw new Exception(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //打印数组 public String toString() { //System.out.println(elementData.toString()); return Arrays.toString(elementData); } //测试 public static void main(String[] args) { MyArrayList slist = new MyArrayList(3); slist.add(132); slist.add(132); slist.add("444"); slist.add(5); slist.add("333"); slist.add("333"); slist.add("abc"); slist.add("ccc"); slist.toString(); System.out.println(slist.size); System.out.println(slist.get(6)); slist.remove(3); System.out.println(slist.size); }}
阅读全文
1 0
- java实现ArrayList顺序表
- 顺序表(ArrayList)java实现
- java自己实现顺序线性表ArrayList
- 数据结构—顺序表(自己实现Java的ArrayList)
- JAVA实现线性表顺序存储结构ArrayList
- 线性表在Java类库中的顺序表示及实现——ArrayList
- JAVA中ArrayList顺序容器
- Android(Java) ArrayList更改顺序
- 线性表顺序存储结构(ArrayList底层实现原理)
- 顺序线性表 ---- ArrayList 源码解析及实现原理分析
- 顺序表----java实现
- java实现顺序表
- JAVA实现顺序表
- 顺序表java实现
- Java实现顺序表
- 顺序表--Java实现
- java 实现顺序表
- Java数据结构-线性表之顺序表ArrayList
- Java四种线程池的使用
- OpenCV3 -跨平台+相机处理
- iOS框架集合:
- iOS里面Objective-C(OC)方法的懒加载
- iOS平台 HEAL 1.1.0 版本 震撼上线 邀你前来体验
- java实现ArrayList顺序表
- Activity的四种启动模式
- 关于mysql5.7中创建用户无法登录及grant操作无效问题的处理
- JDK源码-Collection-toString()
- |1164|C语言实验——矩阵转置
- PO,VO,TO,BO,DAO,POJO的解释
- 转载的ctf练习链接
- JqGrid 动态操作列显示/隐藏
- http-equiv参数详解