Java:List(二)——List、ArrayList、LinkedList
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>
构造函数
ArrayList():建造一个空List,采用默认大小(10);
ArrayList(Collection <? extends E> c):用一个集合构造一个ArrayList;
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>
构造方法
LinkedList():构造一个空List
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的更多相关文章
- Java——集合框架之ArrayList,LinkedList,迭代器Iterator
概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...
- java数据结构之列表——ArrayList,LinkedList,比较
刚看完<数据结构与算法分析java语言描述>的第3章中的表,下面回忆下主要知识点,主要说明各列表之间的关系,以及各自的优缺点.其中牵涉到内部类和嵌套类. 1 Collection APIp ...
- java类集框架(ArrayList,LinkedList,Vector区别)
主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...
- Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器,泥瓦匠慢慢带你们走进List的容器解说.今天泥瓦匠想说说 ArrayLi ...
- Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别
本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现 ...
- Java集合 之List(ArrayList、LinkedList、Vector、Stack)理解(new)
一. ArrayList底层实现原理 对比 和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOn ...
- Java集合--ArrayList,LinkedList性能分析
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口 ...
- JAVA集合一:ArrayList和LinkedList
JAVA集合一:ArrayList和LinkedList 参考链接: HOW2J.CN 前言 这几篇博客重点记录JAVA的几个重要的集合框架:ArrayList.LinkedList.HashMap. ...
- java面试题(杨晓峰)---第八讲谈谈Vector,ArrayList,LinkedList有何区别?
Vector,ArrayList,LinkedList均为线性的数据结构,但是从现实方式与应用场景中又存在差别. 1 底层实现方式 ArrayList内部数组来实现,LinkedList内部采用双向链 ...
- Java Collection - ArrayList & LinkedList
总结 ref: https://blog.csdn.net/qq_32679815/article/details/78907437 1-ArrayList是实现了基于动态数组的数据结构,Linked ...
随机推荐
- (2)RabbitMQ架构设计与应用场景
1.什么是消息中间件? 消息是指应用间传输的数据.消息体包括文本字符串.Json.内嵌对象等.消息中间件是基于队列模型实现异步和同步传输数据的.作用:解耦,冗余(存储).扩展性.削峰.可恢复性.顺序保 ...
- 微前端框架 之 single-spa 从入门到精通
前序 目的 会使用single-spa开发项目,然后打包部署上线 刨析single-spa的源码原理 手写一个自己的single-spa框架 过程 编写示例项目 打包部署 框架源码解读 手写框架 关于 ...
- C++ 反汇编:关于Switch语句的优化措施
流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支的优化措施有4种形式,分别是,IF-ELSE优化,有序线性优 ...
- C#Xml的三种创建方式(或者是两种?)和增删改查
一.Xml的创建方式 Xmlwriter(流式读取,Stream) 写过了:https://www.cnblogs.com/dengzhekaihua/p/15438493.html 这种方法虽然快, ...
- 使用gige2500万相机时遇见的问题(条纹以及取图过久)
1.确保网卡支持1g全双工: 2.确保安装了MVTec GigE Vision Streaming Filter(使用halcon接口的情况下) 3.确保机台的杀毒软件开放了相机的网络监控功能
- linux下使用openssl生成 csr crt CA证书
证书文件生成:一.服务器端1.生成服务器端 私钥(key文件);openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件( ...
- UDP数据包最大传输长度
概念以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元). 但这并不是指链路层的长度被限制在1500字 ...
- Python--变量和简单数据类型
Python--变量和简单数据类型 目录 Python--变量和简单数据类型 一.Python脚本运行过程 二.变量 1. 变量的命名和使用 2. Python关键字和内置函数 2.1 Python关 ...
- logback1.3.x配置详解与实践
前提 当前(2022-02前后)日志框架logback的最新版本1.3.0已经更新到1.3.0-alpha14版本,此版本为非stable版本,相对于最新稳定版1.2.10来说,虽然slf4j-api ...
- SpringCloud--feign的配置加载
spring cloud feign我们使用 @FeignClient注解,其中有几个核心属性: @AliasFor("name") String value() default ...