List<E> 接口简明
java.util.List<E>接口、ListIterator、equals 方法
List 是 Collection 接口的子接口,具备了 Collection 的所有方法。
List 体系特有的共性方法中,查阅方法发现 List 的特有方法都有索引,这是该集合最大的特点。
List : 有序( 元素存入集合的顺序和取出的顺序一致 ) ,元素都有索引。元素可以重复。
- ArrayList : 底层数据结构是数组, 线程不同步,ArrayList 替代了 Vector ,随机访问速度快。
- LinkedList : 底层数据结构是链表,线程不同步,增删元素的速度快。
- Quene : Queue接口窄化了对LinkedList的方法的访问权限。
API java.util.List
- 添加:
add(index,element):在指定的索引位插入元素。
addAll(index,collection):在指定的索引位插入一堆元素。 - 删除:
remove(index):删除指定索引位的元素。 返回被删的元素。 - 获取:
Object get(index):通过索引获取指定元素。
int indexOf (obj):获取指定元素第一次出现的索引位,如果该元素不存在返回-1;
所以,通过-1,可以判断一个元素是否存在。
int lastIndexOf(Object o):反向索引指定元素的位置。
List subList (start,end):获取子列表。 - 修改:
Object set(index,element):对指定索引位进行元素的修改。 - 获取所有元素:
ListIterator listIterator ():list 集合特有的迭代器。
for ( int x = 0; x < list.size(); x++ ){
System.out.print("get:" + list.get(x));
}
角标遍历
并发修改
在进行列表元素迭代的时候,如果在迭代过程中,迭代器检测出了列表从外部被修改了。 会抛出ConcurrentModificationException 异常。
List<String> list = new LinkedList<>();
...
ListIterator<String> it1 = list.listIterator();
ListIterator<String> it2 = list.listIterator();
it1.next();
it1.remove();
it2.next() //throws ConcurrentModificationException
导致的原因是:
大多数集合类返回的快速失败迭代器在遍历时不允许结构性修改(结构性修改指添加,删除和更新一个元素) 当遍历的同时被结构性修改,就会抛出ConcurrentModificationException异常。如何解决呢?
在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器自身的 remove 或 add 方法,其他任何时间任何方式的修改,迭代器都将抛出ConcurrentModificationException。编写依赖于此异常程序的方式是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。
equals 方法
对于list 集合,底层判断元素是否相同,其实用的是元素自身的equals 方法完成的。所以建议元素都要复写equals 方法 ,建立元素对象自己的比较相同的条件依据。
LinkedList : 的特有方法。
- addFirst();
- addLast();
- offerFirst();
- offerLast();
- getFirst():获取链表中的第一个元素。如果链表为空,抛出 NoSuchElementException;
- getLast();
- peekFirst();获取链表中的第一个元素。如果链表为空,返回 null。
- peekLast();
- removeFirst():获取链表中的第一个元素,但是会删除链表中的第一个元素。如果链表为空,抛出NoSuchElementException
- removeLast();
- pollFirst();获取链表中的第一个元素,但是会删除链表中的第一个元素。如果链表为空,返回 null。
- pollLast();
List<E> 接口简明的更多相关文章
- Map 接口简明
Map 接口并没有继承Collection接口 HashMap : 哈希表数据结构,是线程不同步的,快速.允许存储 null 键,null 值.替代了 Hashtable. LinkedHashMap ...
- Set<E> 接口简明
java. util. Set 接口 Set 接口中的方法和 Collection 中方法一致的.Set 接口取出方式只有一种, 迭代器 . HashSet : 底层数据结构是哈希表,线程 是不同步的 ...
- PC游戏编程(入门篇)(前言写的很不错)
PC游戏编程(入门篇) 第一章 基石 1. 1 BOSS登场--GAF简介 第二章 2D图形程式初体验 2.l 饮水思源--第一个"游戏"程式 2.2 知其所以然一一2D图形学基础 ...
- Golang 微框架 Gin 简介
框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应 ...
- RESTful 接口实现简明指南
REST 简介 REST 是一个术语的缩写,REpresentational State Transfer,中文直译「表征状态转移」,这是个很拗口的词.我的建议是先不要强行理解,直接看怎么做,等对实施 ...
- Java8简明学习之接口默认方法
接口中有默认方法实现Java8允许我们使用default关键字,为接口声明添加非抽象的方法实现. public interface DefaultInterFace { int plus(int x, ...
- Spark如何使用Akka实现进程、节点通信的简明介绍
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- 微信js SDK接口
微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...
- grootjs 简明教程
grootJs简明教程 mvvm框架也是解决的一类问题,在某些时候会提高生产效率: 经过接近一个月的努力,grootJs测试版终于发布了 grootJs是一个mvvm的框架,名字取 grass 和ro ...
随机推荐
- GDB 调试多线程多进程
GDB是linux下的调试利器,在c/c++程序开发过程中必不可少的.这里总结一下多进程和多线程的调试方法和技巧. 多进程的调试: 如下示例 #include <sys/mman.h> # ...
- Sweet Butter 香甜的黄油
Sweet Butter 香甜的黄油 题目大意:m个点,n头奶牛,p条边,每一头奶牛在一个点上,一个点可以有多只奶牛,求这样一个点,使得所有奶牛到这个点的距离之和最小. 注释:n<=500 , ...
- beta冲刺1-咸鱼
前言:这篇算是开始补之前的开端,毕竟beta阶段我们从前面开始就有在陆续做了. 今天的工作: 接收了新成员*1,然后几个人聚了一下,并且讨论了一下目前遇到的问题,以及目前需要处理的问题. 目前遇到的问 ...
- C语言第四次作业-嵌套作业
一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2.设计思路 第一:定义三个整型变量f,t,o,分别代表五分,两分,一分的数量 第二:输入待换金额x 第三:令f=x/5;t=x/ ...
- 高级软件工程2017第7次作业--C++团队项目:Beta阶段综合报告
1.Beta阶段敏捷冲刺每日报告 Bate版敏捷冲刺报告--day0 Bate版敏捷冲刺每日报告--day1 Bate敏捷冲刺每日报告--day2 Bate敏捷冲刺每日报告--day3 Bate敏捷冲 ...
- 201621123050 《Java程序设计》第1周学习总结
1.本周学习总结 java历史概述 java特点:1.简单 2.面向对象 3.健壮 4.跨平台 5.类库众多 JDK.JRE.JVM JDK:JAVA 开发工具包 ,包含JRE JRE: JAVA运行 ...
- xcode7,ios9 部分兼容设置
神奇的苹果公司,再一次让程序员中枪. 一.xcode7 新建的项目,Foundation下默认所有http请求都被改为https请求. HTTP+SSL/TLS+TCP = HTTPS 也就是说,服务 ...
- 201421123042 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至 ...
- SENet
 \(\bf F_{tr}\) 为标准卷积操作 \(\bf F_{sq}\) 为 Global Average Pooling \(\bf F_{ex}\) 为两层全连接网络(可以看做两个1×1卷积 ...
- SUN平台服务器光纤共享存储互斥失败如何恢复数据?
服务器数据恢复故障描述: 服务器最初的设计思路为将两台SPARC SOLARIS系统通过光纤交换机共享同一存储作为CLUSTER使用,正常情况下A服务器工作,当A服务器发生故障宕机后即可将其关机然后开 ...