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) ------------------------------------------------- ...
随机推荐
- 常用的css3新特性总结
1:CSS3阴影 box-shadow的使用和技巧总结: 基本语法是{box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscol ...
- scrapy 爬虫踩过的坑(I)
问题1:正则表达式没问题,但是爬虫进不了item方法 分析: 1. 可能是下载不到list 页面的内容.可以用 scrapy shell url 进行测试 2. 可能是allowed_domains ...
- 47、求1+2+3+...+n
一.题目 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 二.解法 public class Solut ...
- sql server 2008 r2 产品密钥
数据中心版:PTTFM-X467G-P7RH2-3Q6CG-4DMYBDDT3B-8W62X-P9JD6-8MX7M-HWK38==================================== ...
- Python os模块和sys模块 操作系统的各种接口
一.os模块 这个模块提供了一个便携式去使用操作系统的相关功能,如果只是想操作路径,请参阅os.path模块. ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 ...
- curl错误码77 及 升级libcurl
今天碰到一个问题,curl请求返回错误码77错误 还给出了官网地址,网上查到77对应的是CURLE_SSL_CACERT_BADFILE 想起了刚默认更新了libcurl,于是有手工安装了一下c ...
- [ python ] FTP作业进阶
作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp se ...
- Scrapy 笔记(三)
摘抄自Python 一.随机user-agent 的设置 关于配置和代码 这里我找了一个之前写好的爬虫,然后实现随机更换User-Agent,在settings配置文件如下: DOWNLOADER_M ...
- 在内网环境使用WPAD/PAC和JS攻击win10
转:https://mp.weixin.qq.com/s/qoEZE8lBbFZikKzRTwgdsw 在内网环境使用WPAD/PAC和JS攻击win10 2018-03-01 wangrin 看雪学 ...
- IDA问题相关
1.当想使用F5时出现“please position the cursor within a function”,那么就创建函数,但是创建时出现“The function has undefined ...