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. Chrome DevTools 面板全攻略

    李华西,微医云服务团队前端开发工程师,喜欢瞎折腾,典型猫奴 Console 面板 此章节请打开 devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信 ...

  2. linux面试题(重点)

    1.No space left on device ,但df -h,磁盘空间还很富余?原因是 Inode 耗尽.可以使用df -i检查.磁盘中中产生了很多小的临时文件,造成在磁盘空间耗尽之前文件系统的 ...

  3. Task+ConcurrentQueue多线程编程

    队列(Queue)代表了一个先进先出的对象集合.当您需要对各项进行先进先出的访问时,则使用队列.当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队. ConcurrentQueue< ...

  4. Node.js下载安装与配置(windows)

    一.Node.js下载 官网下载地址:下载 | Node.js 中文网 (nodejs.cn) 以Windows64位安装版为例,点击"Windows 安装包(.msi)"右侧的& ...

  5. Tomcat临时目录及java.io.tmpdir对应的目录

    最近客户现场的技术支持接连反馈了一个问题:导入数据的时候,上传的excel会在服务器上生成一个临时文件,而这个临时文件都在  tomcat 的安装目录下,如果上传次数比较多的话,就会导致tomcat安 ...

  6. Tomcat部署时war和war exploded区别以及打包后路径问题

    感谢原文作者:keven_deng 原文链接:https://blog.csdn.net/keven_deng/article/details/104830664 war和war exploded的区 ...

  7. dealloc方法

    dealloc方法基本概念 当一个对象的引用计数器值为0时,这个对象即将被销毁,其占用的内存被系统回收 对象即将被销毁时系统会自动给对象发送一条dealloc消息 (因此, 从dealloc方法有没有 ...

  8. iOS App 架构文章推荐

    iOS应用开发架构 iOS应用架构谈系列 阿里技术沙龙 2.2.1. Hybrid App 2.2.2. taobao 客户端架构 2.2.3. alipay 客户端架构   iOS APP 架构漫谈 ...

  9. 简单实现支付密码输入框 By HL

    密码输入框在微信,支付宝中比较常见 主要功能点 1.6位(或者N位)密码输入框封装

  10. SpringBoot源码解读系列三——引导注解

    我们再来看下SpringBoot应用的启动类: 查看代码 import org.springframework.boot.SpringApplication; import org.springfra ...