【数据结构】1.线性表的实现(ArraysList)

  1. List接口的定义
    线性结构可以由顺序存储结构和链式存储结构实现
    将两者对线性结构共同的操作进行抽取,定义出线性结构的接口
    package p1.接口;
    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);
    	//获取指定角标元素
    	public E get(int index);
    	//修改指定角标处的元素,并返回原先的值
    	public E set(int index, E element);
    	//获取线性表中元素的个数
    	public int size();
    	//查看元素第一次出现的角标位置(从左到右)
    	public int indexOf(E elemrnt);
    	//判断是否包含元素
    	public boolean contains(E element);
    	//判断线性表是否为空
    	public boolean isEmpty();
    	//清空线性表
    	public void clear();
    	//按照比较器的内容进行排序
    	public void sort(Comparator<E> c);
    	//获取子线性表[formIndex,toIndex)
    	public List<E> subList(int fromIndex, int toIndex);
    }
    

2. 线性表的实现ArrayList

ArrayList就是线性结构顺序存储方式的具体实现,称为线性表
创建ArrayList类实现List接口

2.1定义相关成员属性

三个成员属性:data size DEFAULT_CAPACITY
	/数组的容器 data.length 指的就是当前数组的容量
    private E[] data;
    //元素的个数 size == 0 线性表为空 size == data.length 线性表满了
    //size 新元素默认尾部添加时要去的角标
    private int size;
    //默认容量
    private static int  DEFAULT_CAPACITY = 10;
    //创建一个默认容量为10的线性表

2.2定义构造函数

data不能直接引用外部传入的数组arr否则外部对arr的修改会引起ArrayList内部的一些问题
	//创建一个默认容量为10的线性表
    public ArrayList(){
   
        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];
        size = 0;
    }
    //传入一个数组 将该数组封装成为一个线性表
    public ArrayList(E[] arr){
   
        if(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值