美文网首页
List(链表)

List(链表)

作者: 刘岳森 | 来源:发表于2017-10-23 21:57 被阅读12次

list常见的实现方法有

ArrayList

特点

  • 属于常规list,有链表的特点
  • 删除和添加元素快

常见用法

  • 初始化
    ArrayList List = new ArrayList();
    ArrayList List = new ArrayList(number);//number用于设定list的初始长度
  • 添加元素:默认添加:list.add(e);
    指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
  • 删除元素:返回是否删除:list.remove(e);直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
  • 替换元素(替换掉指定下标的元素):list.set(index,e);
  • 取出元素:list.get(index);
  • 清空集合:list.clear();
  • 判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
  • 对比两个集合中的所有元素:两个对象一定相等:list.equals(list2);两个对象不一定相等:list.hashCode() == list2.hashCode();(两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。)
  • 获得元素下标:元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
  • 判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
  • 返回Iterator集合对象:list.iterator();
  • 将集合转换为字符串:list.toString();
  • 截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);
  • 将集合转换为数组:默认类型:list.toArray();指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);

代码实现

属性
/**
     * 默认底层数组大小
     */
    private static final int DEFAULT_CAPACITY = 10;

    /**
     * 当底层数组长度为0时(list刚创建还没添加元素的时候)
     * 使用的数组
     * new ArrayList(0)创建对象时使用该数组
     */
    private static final Object[] EMPTY_ELEMENTDATA = {};

    /**
     * 与上面的EMPTY_ELEMENTDATA类似,不同点在于在第一次
     * 执行add()的时候会使用DEFAULT_CAPACITY作为扩容大小
     * new ArrayList()创建对象时使用该数组
     */
    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

    /**
     *  底层实际用于存放元素的数组
     */
    transient Object[] elementData; 

    /**
     * list里面实际包含的元素个数
     */
    private int size;

     /**
      * 数组最大值
      */
    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

相关文章

网友评论

      本文标题:List(链表)

      本文链接:https://www.haomeiwen.com/subject/fmdruxtx.html