线性表(linear list) 也称有序表(ordered list),它的每一一个实例都是元素的一个有序集合。每一个实例的形式为(e0,e1,...,en-1))其中n是有穷自然数,e是线性表的元素,i是元素e;的索引,n是线性表的长度或大小。元素可以被看做原子,它们本身的结构与线性表的结构无关。当n=0时,线性表为空;当n>0时,eo 是线性表的第0个元素或首元素,en-1 是线性表的最后一个元素。可以认为eo先于e1,er先于e2,等等。除了这种先后关系之外,线性表不再有其他关系。
以下是一些线性表的例子: 1 )一个班级的学生按姓名的字母顺序排列的列表; 2)按非递减次序排列的考试分数表; 3)按字母顺序排列的会议列表; 4)奥林匹克男子篮球比赛的金牌获得者按年代次序排列的列表。根据这些例子可以理解对线性表应该实施的下列操作:
●创建一个线性表。
●撤销一个线性表。
●确定线性表是否为空。
●确定线性表的长度。
●按一个给定的索引查找一个元素 。
●按一个给定的元素查找其索引。
●按一个给定的索引删除个元素 。
●按一个给定的索引插人一个元素。
●从左至右顺序输出线性表元素。
接口List
import java.util.Comparator;
public interface List<E> extends Iterable<E> {
//增
public void add(E element);
public void add(int index,E element);
//删
public void remove(E element);
public E remove(int index);
//get,set方法
public E get(int index);
public E set(int index,E element);
//获得线性表中元素个数
public int size();
//根据元素值获得对应下标
public int indexOf(E element);
//是否包含元素
public boolean contains(E element);
//是否为空
public boolean isEmpty();
//清空线性表
public void clear();
//排序(需传入比较器)
public void sort(Comparator<E> c);
//获得子线性表即 fromIndex到 toIndex
public List<E> subList(int fromIndex,int toIndex);
}
数组实现类ArrayList
import p1.接口.List;
import java.util.Comparator;
import java.util.Iterator;
public class ArrayList <E> implements List<E> {
//数组容器
private E[] data;
//元素个数,如果size为0,表为空;size == data.length 满了
//新元素要加的位置的角标
private int size;
//默认容量
private static int DEFAULT_CAPACITY = 10;
public ArrayList(){
//默认长度为10
data = (E[]) new Object[DEFAULT_CAPACITY];
size = 0;
}
//创建一个指定容量线性表
public ArrayList(int capacity){
if(capacity <=0){
throw new IllegalArgumentException("capacity must 大于0");
}
DEFAULT_CAPACITY = capacity;
data = (E[]) new Object[DEFAULT_CAPACITY];