JDK源码(1.7) -- java.util.List<E>
java.util.List<E> 源码分析(JDK1.7)
---------------------------------------------------------------------------------
java.util.List<E>是一个接口,它的定义如下:
public interface List<E> extends Collection<E> {
// Query Operations // Modification Operations // Bulk Modification Operations // Comparison and hashing // Positional Access Operations // Search Operations // List Iterators // View
}
(1)List列表是一个有序的collection,此接口可以对列表中每个元素的插入位置进行精确地控制
(2)用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索List列表中的元素
(3)List列表允许重复的元素
(4)List接口提供了特殊的迭代器,称为ListIterator,除了允许Iterator接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问
(5)看看java.util.Collection<E>的源码介绍
---------------------------------------------------------------------------------
下面来看看java.util.List<E>中具体有哪些方法:
从下面的表格中可以看出java.util.List<E>接口中一共有25个方法:
其中查询操作6个;修改操作2个;批量操作6个;比较和哈希操作2个;位置访问操作4个;位置查询操作2个;List Iterator操作2个;视图操作1个;(用浅蓝色字体标出的是java.util.List<E>接口新增的方法,其余的都是从java.util.Collection<E>中来的。 (~_~ 真是不嫌事情多,提供了25个方法需要由其扩展类来实现...))
查询操作 | int size() | 返回列表中的元素数。如果列表包含多于Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE |
boolean isEmpty() | 如果列表不包含元素,则返回true | |
boolean contains(Object o) | 如果列表包含指定的元素,则返回true。 | |
Iterator<E> iterator() | 返回按适当顺序在列表的元素上进行迭代的迭代器 | |
Object[] toArray() | 返回按适当顺序包含列表中的所有元素的数组 | |
<T> T[] toArray(T[] a) | 返回按适当顺序包含列表中所有元素的数组 | |
修改操作 | boolean add(E e) | 向列表的尾部添加指定的元素 |
boolean remove(Object o) | 从此列表中移除第一次出现的指定元素 | |
批量操作 | boolean containsAll(Collection<?> c) | 如果列表包含指定collection的所有元素,则返回true |
boolean addAll(Collection<? extends E> c) | 添加指定collection中的所有元素到此列表的结尾 | |
boolean addAll(int index,Collection<? extends E> c) | 将指定collection中的所有元素都插入到列表中的指定位置 | |
boolean removeAll(Collection<?> c) | 从列表中移除指定collection中包含的其所有元素 | |
boolean retainAll(Collection<?> c) | 仅在列表中保留指定collection中所包含的元素 | |
void clear() | 从列表中移除所有元素 | |
比较和哈希操作 | boolean equals(Object o) | 比较指定的对象与列表是否相等 |
int hashCode() | 返回列表的哈希码值 | |
位置访问操作 | E get(int index) | 返回列表中指定位置的元素 |
E set(int index,E element) | 用指定元素替换列表中指定位置的元素 | |
void add(int index,E element) | 在列表的指定位置插入指定元素 | |
E remove(int index) | 移除列表中指定位置的元素 | |
位置查询操作 | int indexOf(Object o) | 返回此列表中第一次出现的指定元素的索引 |
int lastIndexOf(Object o) | 返回此列表中最后出现的指定元素的索引 | |
List Iterators | ListIterator<E> listIterator() | 返回此列表元素的列表迭代器 |
ListIterator<E> listIterator(int index) | 返回列表中元素的列表迭代器 | |
视图操作 | List<E> subList(int fromIndex,int toIndex) | 返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图 |
再来看看下图:
---------------------------------------------------------------------------------
java.util.List<E>源码如下:(看看下面的源码,定义的很规范,各种操作都有-----> 此时应该想到它的实现类该有多可怜,要实现多少方法呀。~_~)
package java.util; public interface List<E> extends Collection<E> {
// Query Operations
int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); // Modification Operations
boolean add(E e); boolean remove(Object o); // Bulk Modification Operations
boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean addAll(int index, Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c); void clear(); // Comparison and hashing
boolean equals(Object o); int hashCode(); // Positional Access Operations
E get(int index); E set(int index, E element); void add(int index, E element); E remove(int index); // Search Operations int indexOf(Object o); int lastIndexOf(Object o); // List Iterators
ListIterator<E> listIterator(); ListIterator<E> listIterator(int index); // View
List<E> subList(int fromIndex, int toIndex);
}
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
JDK源码(1.7) -- java.util.List<E>的更多相关文章
- JDK源码(1.7) -- java.util.Collection<E>
java.util.Collection<E> 源码分析(JDK1.7) -------------------------------------------------------- ...
- JDK源码学习之 java.util.concurrent.automic包
一.概述 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CP ...
- JDK源码(1.7) -- java.util.Deque<E>
java.util.Deque<E> 源码分析(JDK1.7) -------------------------------------------------------------- ...
- JDK源码(1.7) -- java.util.Queue<E>
java.util.Queue<E> 源码分析(JDK1.7) -------------------------------------------------------------- ...
- JDK源码(1.7) -- java.util.Arrays
java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...
- JDK源码(1.7) -- java.util.AbstractList<E>
java.util.AbstractList<E> 源码分析(JDK1.7) ------------------------------------------------------- ...
- JDK源码(1.7) -- java.util.ListIterator<E>
java.util.ListIterator<E> 源码分析(JDK1.7) ------------------------------------------------------- ...
- JDK源码(1.7) -- java.util.Iterator<E>
java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...
- JDK源码(1.7) -- java.util.AbstractCollection<E>
java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...
随机推荐
- Window 平台安装 Python:
Window 平台安装 Python: 打开WEB浏览器访问http://www.python.org/download/ 在下载列表中选择Window平台安装包,包格式为:python-XYZ.ms ...
- 21.Merge Two Sorted Lists---《剑指offer》面试17
题目链接:https://leetcode.com/problems/merge-two-sorted-lists/description/ 题目大意: 给出两个升序链表,将它们归并成一个链表,若有重 ...
- 137.Single Number II---位运算---《剑指offer》40
题目链接:https://leetcode.com/problems/single-number-ii/description/ 题目大意:给出一串数,每个数都出现三次,只有一个数只出现一次,把这个出 ...
- Linux下通过源码编译安装程序(configure/make/make install的作用,然后在/etc/profile文件里修改PATH环境变量)
一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...
- (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现
架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用 优势: ...
- 利用Fidder工具抓取App数据包
第一步:下载神器Fiddler,下载链接: http://fiddler2.com/get-fiddler 下载完成之后,傻瓜式的安装一下了! 第二步:设置Fiddler打开Fiddler, ...
- 洛谷 P1202 [USACO1.1]黑色星期五Friday the Thirteenth 题解
题目传送门 这道题暴力就能解决. #include<bits/stdc++.h> using namespace std; int xi; ,ans[]; int main() { int ...
- 洛谷 P2077 红绿灯 题解
题目传送门 这道题一秒一秒的扫描一定会超时,所以就用一种O(N)的算法. #include<bits/stdc++.h> using namespace std; ],b[],c[],x= ...
- 在Windows中安装Boot2Docker 遇到 Unable to load R3 module 的解决方案
引言 这个几乎是所有64位win7用户在virtual box上安装64位的linux都会遇到的问题(如果你用的是买机器的时候自带的win7 64位而且你没有重装过系统的除外). 解决办法 可参考以下 ...
- Hadoop案例(一)之日志清洗
日志清洗案例 一. 简单解析版 1)需求 去除日志中字段长度小于等于11的日志. 2)输入数据 /Sep/::: +] "-" "Mozilla/4.0 (compati ...