java学习笔记52:List介绍使用

List

保证按插入顺序排序,元素可以重复,可以通过索引直接操作元素

ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素
LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素
Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

1 List的常用方法
void add(int index, E element)    //在指定位置插入元素,后面的元素都往后移一个元素。
boolean addAll(int index, Collection<? extends E> c)   //在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false。意思就是当插入的集合c没有元素,那么就返回false,如果集合c有元素,插入成功,那么就返回true。
boolean addAll(Collection<? extends E> c) //将指定集合中的所有元素按指定集合的迭代器(可选操作)返回的顺序追加到此列表的末尾。  
E get(int index)   //返回list集合中指定索引位置的元素
int indexOf(Object o)    //返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1。
int lastIndexOf(Object o)   //返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回-1。  
Iterator<E> iterator()   //以适当的顺序返回此列表中元素的迭代器。  
ListIterator<E> listIterator()     //返回此列表元素的列表迭代器(按适当顺序)。
ListIterator<E> listIterator(int index)    //  从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)。和上面那个迭代器不同的就是多了一个参数,就是能控制迭代器开始的位置。
List.iterator()    //方法用于返回按适当顺序在列表的元素上进行迭代的迭代器。方法返回值为 Iterator 对象。
E remove(int index)   //删除指定索引的对象。
E set(int index, E element)   //索引为index位置的元素更改为element元素。
List<E> subList(int fromIndex, int toIndex)    //  返回从索引fromIndex到toIndex的元素集合,包左不包右。
Object[] toArray()  //以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组。  
default void sort(Comparator<? super E> c) //根据指定的Comparator引发的顺序对此列表进行排序。
<T> T[] toArray(T[] a)   //以适当的顺序返回包含此列表中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型。  
boolean remove(Object o) //从该列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。  
boolean removeAll(Collection<?> c) //从此列表中删除指定集合中包含的所有元素(可选操作)。  
default void replaceAll(UnaryOperator<E> operator) //将该列表的每个元素替换为将运算符应用于该元素的结果。  
boolean retainAll(Collection<?> c) //仅保留此列表中包含在指定集合中的元素(可选操作)。
int size() //返回此列表中的元素数。  
void clear()   //从此列表中删除所有元素(可选操作)。  
boolean contains(Object o) //如果此列表包含指定的元素,则返回 true 。  
boolean containsAll(Collection<?> c) //如果此列表包含指定集合的所有元素,则返回 true 。  
static <E> List<E> copyOf(Collection<? extends E> coll) //以迭代顺序返回包含给定Collection的元素的 unmodifiable List 。  
boolean equals(Object o) //将指定对象与此列表进行比较以获得相等性。
boolean isEmpty()   //如果此列表不包含任何元素,则返回 true 。  
2 ArrayList

特有的方法:

ArrayList() //构造一个初始容量为10的空列表。  
ArrayList(int initialCapacity) //构造具有指定初始容量的空列表。  
ArrayList(Collection<? extends E> c) //按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表 
void ensureCapacity(int minCapacity)   //如有必要,增加此 ArrayList实例的容量,以确保它至少可以容纳由minimum capacity参数指定的元素数。
void forEach(Consumer<? super E> action)  //对 Iterable每个元素执行给定操作,直到处理 Iterable所有元素或操作引发异常。
Object clone() //返回此 ArrayList实例的浅表副本。
boolean removeIf(Predicate<? super E> filter) //删除此集合中满足给定谓词的所有元素。
protected void removeRange(int fromIndex, int toIndex)   //从此列表中删除索引介于 fromIndex boolean retainAll(Collection<?> c)   //仅保留此列表中包含在指定集合中的元素。 
Spliterator<E> spliterator()  //在此列表中的元素上创建late-binding和故障快速 Spliterator 。  
void trimToSize() //将此 ArrayList实例的容量调整为列表的当前大小。  
3 Vector
Vector()  //构造一个空向量,使其内部数据数组的大小为 10 ,其标准容量增量为零。  
Vector(int initialCapacity) //构造一个具有指定初始容量且容量增量等于零的空向量。  
Vector(int initialCapacity, int capacityIncrement) //构造具有指定初始容量和容量增量的空向量。 
Vector(Collection<? extends E> c) //按照集合的迭代器返回的顺序构造一个包含指定集合元素的向量。  
void addElement(E obj)  //将指定的组件添加到此向量的末尾,将其大小增加1。
int capacity() //返回此向量的当前容量。
void copyInto(Object[] anArray) //将此向量的组件复制到指定的数组中。  
E elementAt(int index) //返回指定索引处的组件。  
Enumeration<E> elements() //返回此向量的组件的枚举。  
E firstElement() //返回此向量的第一个组件(索引 0处的项)。  
void forEach(Consumer<? super E> action) //对 Iterable每个元素执行给定操作,直到处理 Iterable所有元素或操作引发异常。
void trimToSize() 修剪此向量的容量为向量的当前大小。  
4 LinkedList
LinkedList() //构造一个空列表。  
LinkedList(Collection<? extends E> c) //按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表。 
void addFirst(E e) //在此列表的开头插入指定的元素。  
void addLast(E e) //将指定的元素追加到此列表的末尾。  
E getFirst() //返回此列表中的第一个元素。  
E getLast() //返回此列表中的最后一个元素。  
boolean offer(E e) //将指定的元素添加为此列表的尾部(最后一个元素)。  
boolean offerFirst(E e) //在此列表的前面插入指定的元素。  
boolean offerLast(E e) //在此列表的末尾插入指定的元素。  
E peek() //检索但不删除此列表的头部(第一个元素)。  
E peekFirst() //检索但不删除此列表的第一个元素,如果此列表为空,则返回 null 。  
E peekLast() //检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null 。  
E poll() //检索并删除此列表的头部(第一个元素)。  
E pollFirst() //检索并删除此列表的第一个元素,如果此列表为空,则返回 null 。  
E pollLast() //检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。  
E pop() //弹出此列表所代表的堆栈中的元素。  
void push(E e) //将元素推送到此列表所表示的堆栈上。  
5 Statck
Stack() //创建一个空堆栈。
boolean empty() //测试此堆栈是否为空。  
E peek() //查看此堆栈顶部的对象,而不将其从堆栈中删除。  
E pop() //移除此堆栈顶部的对象,并将该对象作为此函数的值返回。  
E push(E item) //将项目推到此堆栈的顶部。  
int search(Object o) //返回对象在此堆栈上的从1开始的位置。  
6 使用场景
  • 对于需要快速插入,删除元素,应该使用LinkedList。
  • 对于需要快速随机访问元素,应该使用ArrayList。
  • 对于“单线程环境” 或者 “多线程环境,但List仅仅只会被单个线程操作”,此时应该使用非同步的类(如ArrayList)。
  • 对于“多线程环境,且List可能同时被多个线程操作”,此时,应该使用同步的类(如Vector)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值