List

模块:java.util.List

说明

List接口,表明一个序列

用法:List <E>

①直接用List承接一个ArrayList或LinkedList

List <Integer> list = new ArrayList <> ();

②用List.of( ... )快速创建List

List <String> list = List.of("1","2","3");

方法

返回值类型

方法

说明

boolean add(E e) 向List末尾加入一个元素e(相当于Python中的List.append(e))
void add(int index , E e) 在index处插入e
boolean addAll( Collection<? extends E> c )

向List末尾加入c中的所有元素

(相当于Python中的List.extend(c))

boolean addAll(int index , Collection c) 在index处插入c中所有元素
void clear() 移除List中的所有元素
boolean contains(Object o) 判断List中是否包含o
boolean contains(Collection <?> c) 判断List中是否包含c中全部元素
boolean equals(Object o) 判断两个List是否相等——大小、元素全部相等
E get(int index) 获取指定索引处的元素
int hashCode() 获取该List的hashCode
int indexOf(Object o) 获取o在该List中的索引,如果不存在则返回-1
boolean isEmpty() List为空返回true
Iterator<E> iterator() 返回一个Iterator,可以用它遍历全部元素(具体迭代方法,可以见List(一)中所说)
int lastIndexOf(Object o) 获取o最后一次出现时的索引,不存在则返回-1
ListIterator<E> listIterator() 返回一个listIterator
ListIterator<E> listIterator(int index) 返回一个从指定index处开始迭代的listIterator
E remove(int index) 移除并返回指定索引处的元素
boolean remove(Object o) 移除List中第一次出现的元素o
boolean removeAll(Collection<?> c) 移除List中所有在集合c中的元素
default void replaceAll(UnaryOperator <E> operator) 对所有List中的元素应用某个运算符,并用运算结果替换List中的元素
boolean retainAll(Collection<?> c) 只保留List中那些存在于集合c中的元素
E set(int index , E element) 替换指定索引处的元素
int size() 返回List的大小
default void sort(Comparator<? super E> c) 用指定Comparator对List中的元素进行排序
default Spliterator<E> splitertor() 对List中的元素创造一个Spliterator
List<E> subList(int start , int end) 返回[start,end)间的子List
Object[] toArray() 返回一个array,其中包含了List中的所有元素
<T> T[] toArray(T[] a) 把List中的元素保存到一个指定类型T的array中

ArrayList

模块:java.util.ArrayList

说明

数组List

用法:ArrayList<E>

构造函数

  1. ArrayList():建造一个空List,采用默认大小(10);

  2. ArrayList(Collection <? extends E> c):用一个集合构造一个ArrayList;

  3. ArrayList(int initialCapacity):构造一个指定大小的空List。

方法

返回值类型

方法

说明

所有Link接口的方法

Object clone() 返回当前ArrayList的副本
void ensureCapacity(int minCapacity) 增大并保持当前ArrayList的容量为参数指定的值
void forEach(Consumer<? super E> action) 实现这个方法,就可以用forEach语法迭代该List
boolean removeIf(Predicate<? super E> fiter) 移除List中所有满足Predicate的元素
void trimToSize() 压缩ArrayList的容量到当前的Size

LinkedList

模块:java.util.LinkedList

说明

链表List

用法:LinkedList<E>

构造方法

  1. LinkedList():构造一个空List

  2. LinkedList(Collection<? extends E> c):用一个集合构造一个List

方法

返回值类型

方法

说明

所有Link的方法

void addFirst(E e) 在List开头插入元素e
void addLast(E e) 在List末尾插入元素e
Object clone() 返回该LinkedList的一个副本
Iterator<E> descendingIterator() 倒序迭代
E element() 返回第一个元素
E getFirst() 返回第一个元素
E getLast() 返回最后一个元素
boolean offer(E e) 在List末尾插入元素e
boolean offerFirst(E e) 在List开头插入元素e
boolean offerLast(E e) 在List末尾插入元素e
E peek() 返回首元素
E peekFirst() 返回首元素,List为空时返回null
E peekLast() 返回尾元素,List为空时返回null
E poll() 返回并删除首元素
E pollFirst() 返回并删除首元素,List为空时返回null
E pollLast() 返回并删除尾元素,List为空时返回null
E pop() 用该List作为一个Stack时,执行出栈操作
void push(E e) 入栈
E remove() 返回并删除首元素
boolean removeFirstOccurrence(Object o) 移除List中第一次出现的元素o

注意到一些功能重复的方法(没有列全,只举3个常用的):

  • boolean add( E )、boolean offer( E ):尾部添加;
  • E remove()、E poll():获取并删除首部;
  • E element()、E peek():获取首部但不删除;

这是因为在失败时,它们的行为不同——前者会throw IllegalStateException、后者会return false或null。

现举add与offer为例,剩下两个其实用法一致:

Queue <String> q =...
try{
q.add("Apple");
System.out.println("添加成功");
} catch(IllegalStateException e){
System.out.println("添加失败");
}
Queue <String> q =...
if(q.offer("Apple")){
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}

Java:List(二)——List、ArrayList、LinkedList的更多相关文章

  1. Java——集合框架之ArrayList,LinkedList,迭代器Iterator

    概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...

  2. java数据结构之列表——ArrayList,LinkedList,比较

    刚看完<数据结构与算法分析java语言描述>的第3章中的表,下面回忆下主要知识点,主要说明各列表之间的关系,以及各自的优缺点.其中牵涉到内部类和嵌套类. 1 Collection APIp ...

  3. java类集框架(ArrayList,LinkedList,Vector区别)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...

  4. Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器,泥瓦匠慢慢带你们走进List的容器解说.今天泥瓦匠想说说 ArrayLi ...

  5. Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

    本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现 ...

  6. Java集合 之List(ArrayList、LinkedList、Vector、Stack)理解(new)

    一. ArrayList底层实现原理 对比 和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOn ...

  7. Java集合--ArrayList,LinkedList性能分析

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口 ...

  8. JAVA集合一:ArrayList和LinkedList

    JAVA集合一:ArrayList和LinkedList 参考链接: HOW2J.CN 前言 这几篇博客重点记录JAVA的几个重要的集合框架:ArrayList.LinkedList.HashMap. ...

  9. java面试题(杨晓峰)---第八讲谈谈Vector,ArrayList,LinkedList有何区别?

    Vector,ArrayList,LinkedList均为线性的数据结构,但是从现实方式与应用场景中又存在差别. 1 底层实现方式 ArrayList内部数组来实现,LinkedList内部采用双向链 ...

  10. Java Collection - ArrayList & LinkedList

    总结 ref: https://blog.csdn.net/qq_32679815/article/details/78907437 1-ArrayList是实现了基于动态数组的数据结构,Linked ...

随机推荐

  1. Java多线程专题5: JUC, 锁

    合集目录 Java多线程专题5: JUC, 锁 什么是可重入锁.公平锁.非公平锁.独占锁.共享锁 可重入锁 ReentrantLock A ReentrantLock is owned by the ...

  2. django之memcached缓存系统

    django其他缓存方法:(https://www.cnblogs.com/jishuweiwang/p/6110809.html) memcached版本 <1.5 1. memcached缓 ...

  3. String Reversal

    Educational Codeforces Round 96 (Rated for Div. 2) - E. String Reversal 跳转链接 题目描述 定义一个操作为交换字符串中相邻的两个 ...

  4. NumPy 基础知识·翻译完成

    原文:Numpy Essentials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 7241 ...

  5. Linux 查看运行中进程的 umask

    线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用.这个应用会生成一个文件,到NFS挂载目录. 而这个 NFS 挂载目录是一个 FTP 服务器的目录.另一台 ...

  6. 自定义ASP.NET MVC Html标签辅助方法

    原文:https://blog.csdn.net/a497785609/article/details/50184779 在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性 ...

  7. JAVA多线程学习十一-线程锁技术

    前面我们讲到了synchronized:那么这节就来将lock的功效. 一.locks相关类 锁相关的类都在包java.util.concurrent.locks下,有以下类和接口: |---Abst ...

  8. samb建立共享文件夹,windows报无法访问没有访问权限

    一.首先确保你已经成功安装上了samba 二.在修改smb.conf文件之前,先拷贝一个备份,然后输入下面的命令修改smb.conf gedit /etc/samba/smb.conf将smb.con ...

  9. 我对JavaWeb中中文URL编码的简单总结

    1.application/x-www-form-urlencoded 它是一种编码类型.当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-u ...

  10. 编译PHP扩展的方式

    编译的两种方式其实很简单,这里记录只是为了以后遇到这种情况时不加思索地运用上,而不是花费一些时间去回忆. C/C++程序编译有两种方式:动态编译.静态编译.PHP 是使用 C/C++程序开发的一门脚本 ...