Java代码实现简单的线性表(类ArrayList)的Demo
package com.test.list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; //顺序表代码 public class SequenceListimplements Iterable { //元素长度 private int LENGTH; //存储元素的数组 private T[] elementData; //默认数组长度 int initCapacity = 4; //构造方法 public SequenceList() { elementData = (T[]) new Object[initCapacity]; } //指定数组长度的构造方法 public SequenceList(int capacity) { elementData = (T[]) new Object[capacity]; } //清空当前线性表内容 public void clear() { elementData = null; LENGTH = 0; } //获取当前线性表的长度 public int getLength() { return this.LENGTH; } //获取线性表中数组的大小 public int elementDataLength(){ return elementData.length; } //判断当前线性表是否为空 public boolean isEmpty() { return LENGTH == 0; } //获取指定位置的元素 public T get(int i) { if (i < 0 || i >= LENGTH) { throw new RuntimeException("当前元素不存在!"); } return elementData[i]; } //添加元素 public void insert(T t) { if (LENGTH == elementData.length) { resize(elementData.length * 2); } elementData[LENGTH] = t; LENGTH++; } //在指定位置添加元素 public void insert(T t, int i) { if (i < 0 || i > LENGTH) { throw new RuntimeException("插入的位置不正确!"); } if (LENGTH == elementData.length) { resize(elementData.length * 2); } for (int j = LENGTH; j > i; j--) { elementData[j] = elementData[j - 1]; } elementData[i] = t; LENGTH++; } //改变数组容量大小 private void resize(int newSize) { T[] temp = elementData; elementData = (T[]) new Object[newSize]; for (int i = 0; i < LENGTH; i++) { elementData[i] = temp[i]; } } //删除指定位置的元素并返回 public T remove(int i) { if (i < 0 || i >= LENGTH) { throw new RuntimeException("当前元素不存在!"); } T temp = elementData[i]; //删除的元素的位置空出来了,后面的元素全部向前移一位 for (int j = i; j < LENGTH - 1; j++) { elementData[j] = elementData[j + 1]; } LENGTH--; //当元素数量不足数组大小的1/4时,重置数组的大小 if (LENGTH > 0 && LENGTH < elementData.length / 4) { resize(elementData.length / 2); } return temp; } //根据元素内容查找第一次出现的下标位置 public int getIndex(T t) { if (t == null) { throw new RuntimeException("所查找元素不合法!"); } for (int i = 0; i < LENGTH; i++) { if (elementData[i].equals(t)) { return i; } } return -1; } //打印当前线性表数据 public void printData() { for (int i = 0; i < LENGTH; i++) { System.out.print("[" + i + "]=" + elementData[i] + " "); } System.out.println(); } @Override public Iterator iterator() { return new SIterator(); } private class SIterator implements Iterator { private int current; public SIterator() { this.current = 0; } @Override public boolean hasNext() { return current < LENGTH; } @Override public Object next() { return elementData[current++]; } } }



