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. Xcode删除证书

    手动删除 xcode5 provisioning profile path: ~/Library/MobileDevice/Provisioning Profiles

  2. 控制流之break

    break语句是用来 终止 循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句.一个重要的注释是,如果你从for或while循环中 终止 ,任何对应的循环else块 ...

  3. ajax--2017年1月15日

    听说点六下就能复制了? ajax: 一般处理程序(数据接口):ashx 跨语言传递数据:xml: 结构不清晰 代码量比较大 查找起来比较费事 非面向对象结构 json: 结构清晰 代码量相对较小 面向 ...

  4. 苹果App Store开发者帐户从申请,验证,到发布应用(2)

    app store付费 上面已经介绍了app store id的注册了,下面在注册基础上,介绍一下app store的付费.   在上面注册成功之后,会收到一封邮件.   1.收到邮件Thank Yo ...

  5. JdbcTemplate的主要用法

    JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修 ...

  6. cocoaPods的安装使用 以及 Carthage

    http://cnbin.github.io/blog/2015/05/25/cocoapods-an-zhuang-he-shi-yong/ 按照这个步骤就OK Note:当引入已有的project ...

  7. SQLite用法

    SQLite语法:http://blog.csdn.net/ejzhang/article/details/6224915#08 SQLite查询优化:1.http://www.eoeandroid. ...

  8. bzoj3942——2016——3——15

    题目大意: 3942: [Usaco2015 Feb]Censoring Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 220  Solved: 11 ...

  9. C#、C++用GDAL读shp文件(转载)

    C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...

  10. 五 Android Capabilities讲解

    1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...