源码(04) -- 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);
}
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
源码(04) -- java.util.List<E>的更多相关文章
- 源码(09) -- java.util.Arrays
java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...
- 源码(03) -- java.util.Collection<E>
java.util.Collection<E> 源码分析(JDK1.7) -------------------------------------------------------- ...
- JDK1.8源码(五)——java.util.Vector类
JDK1.8源码(五)--java.lang. https://www.cnblogs.com/IT-CPC/p/10897559.html
- Java源码之 java.util.concurrent 学习笔记01
准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...
- 源码(05) -- java.util.AbstractCollection<E>
java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...
- 源码(06) -- java.util.AbstractList<E>
java.util.AbstractList<E> 源码分析(JDK1.7) ------------------------------------------------------- ...
- 源码(07) -- java.util.Iterator<E>
java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...
- 源码(08) -- java.util.ListIterator<E>
java.util.ListIterator<E> 源码分析(JDK1.7) ------------------------------------------------------- ...
- JDK1.8源码(四)——java.util.Arrays 类
java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 1.asList public static ...
随机推荐
- 用Quick Cocos2dx做一个连连看(三)
做个日记吧. 最近比较忙,斗志也不高,昨天有点时间了,开始做了一下连接方法,一开始用的搜索算法,但是bug比较多,究其原因是对语法和算法都不是很熟悉. 然后昨天下午利用点时间用稍微通俗一点的连接算法, ...
- 五、pig学习
一.什么是pig 1.pig和sql.map-reduce的关系 来自为知笔记(Wiz)
- LPC1768的USB使用--宏定义
#ifndef __USBREG_H #define __USBREG_H /* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devin ...
- 机器学习算法与实现 之 Logistic Regression---java实现
Logistic Regression和Linear Regression实现起来几乎是一样的,有疑问的同学可以看一看Andrew N.g在coursera上的machine learning课程. ...
- Memcached源码分析之从SET命令开始说起
作者:Calix 如果直接把memcached的源码从main函数开始说,恐怕会有点头大,所以这里以一句经典的“SET”命令简单地开个头,算是回忆一下memcached的作用,后面的结构篇中关于命令解 ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- poi 导出excel 异常处理方式--曲线救国法
excel 导出不算什么新鲜的话题.目前各种生成excel的开源jar包,poi,jxtl等.但是下载过程中如果出现异常该如何处理呢. 翻了之前的几个项目中的excel导出,有的异常就直接抛了出去,有 ...
- 第六百二十七天 how can I 坚持
竟然能上google了,可惜手机装twitter装上登不上呢. 浏览浏览能学学英语啊. 今天又在家待了一天,得戒游戏了,找找能让我疯狂的事情,然后坚持去干吧,加油. 洗澡睡觉.
- DEV控件的Gridview1
DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...
- spring框架学习(三)junit单元测试
spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...