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>的更多相关文章

  1. 源码(09) -- java.util.Arrays

    java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...

  2. 源码(03) -- java.util.Collection<E>

     java.util.Collection<E> 源码分析(JDK1.7) -------------------------------------------------------- ...

  3. JDK1.8源码(五)——java.util.Vector类

    JDK1.8源码(五)--java.lang. https://www.cnblogs.com/IT-CPC/p/10897559.html

  4. Java源码之 java.util.concurrent 学习笔记01

    准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...

  5. 源码(05) -- java.util.AbstractCollection<E>

    java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...

  6. 源码(06) -- java.util.AbstractList<E>

    java.util.AbstractList<E> 源码分析(JDK1.7) ------------------------------------------------------- ...

  7. 源码(07) -- java.util.Iterator<E>

    java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...

  8. 源码(08) -- java.util.ListIterator<E>

    java.util.ListIterator<E> 源码分析(JDK1.7) ------------------------------------------------------- ...

  9. JDK1.8源码(四)——java.util.Arrays 类

    java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 1.asList public static ...

随机推荐

  1. lPC1788的GPIO驱动

    #include "led.h" void led_init(void) { //p1.14 p0.16 p1.13 p4.27 LPC_SC->PCONP |= (1< ...

  2. 使用DLL进行不同语言之间的调用(转)

    源:使用DLL进行不同语言之间的调用 __declspec(dllexport) 是告诉编译器用来导出函数的,在代码中不另作说明了. extern "C" 的意思就是用C的方式来导 ...

  3. Xcode--Alcatraz来管理Xcode插件

    简介 Alcatraz是一个帮你管理Xcode插件.模版以及颜色配置的工具.它可以直接集成到Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 安装和删除 使用如下的命令行来安装Al ...

  4. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  5. Phone APP设计规范/iPad APP设计规范/Android APP设计规范/网页设计规范

    原文链接:http://www.ui001.com/chicun/ ①iPhone的设计尺寸 iPhone界面尺寸: 设备 分辨率 状态栏高度 导航栏高度 标签栏(工具栏)高度 iPhone6 plu ...

  6. Memcached源码分析之请求处理(状态机)

    作者:Calix 一)上文 在上一篇线程模型的分析中,我们知道,worker线程和主线程都调用了同一个函数,conn_new进行事件监听,并返回conn结构体对象.最终有事件到达时,调用同一个函数ev ...

  7. Java中的 List Set Map

    类层次关系如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └W ...

  8. eclipse 完全智能提示

     1.添加智能提示 eclipse的代码提示是按”.”这个字符提示的,而如果想在其他的条件下触发,则需要按Alt + / 或者是 Ctrl + Space手动调用 (Ctrl + Space原先是Ec ...

  9. wildfly 如何设置外网访问

    wildfly的默认配置是不支持外网访问的, 要想实现外网访问需要修改standalone.xml配置文件. 配置文件所在路径:wildfly/standalone/configuration/sta ...

  10. 让php Session 存入 redis 配置方法

    首先要做的就是安装redis 安装方法:http://redis.io/download Installation Download, extract and compile Redis with: ...