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;
网友评论