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. 用Quick Cocos2dx做一个连连看(三)

    做个日记吧. 最近比较忙,斗志也不高,昨天有点时间了,开始做了一下连接方法,一开始用的搜索算法,但是bug比较多,究其原因是对语法和算法都不是很熟悉. 然后昨天下午利用点时间用稍微通俗一点的连接算法, ...

  2. 五、pig学习

    一.什么是pig 1.pig和sql.map-reduce的关系 来自为知笔记(Wiz)

  3. LPC1768的USB使用--宏定义

    #ifndef __USBREG_H #define __USBREG_H /* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devin ...

  4. 机器学习算法与实现 之 Logistic Regression---java实现

    Logistic Regression和Linear Regression实现起来几乎是一样的,有疑问的同学可以看一看Andrew N.g在coursera上的machine learning课程. ...

  5. Memcached源码分析之从SET命令开始说起

    作者:Calix 如果直接把memcached的源码从main函数开始说,恐怕会有点头大,所以这里以一句经典的“SET”命令简单地开个头,算是回忆一下memcached的作用,后面的结构篇中关于命令解 ...

  6. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  7. poi 导出excel 异常处理方式--曲线救国法

    excel 导出不算什么新鲜的话题.目前各种生成excel的开源jar包,poi,jxtl等.但是下载过程中如果出现异常该如何处理呢. 翻了之前的几个项目中的excel导出,有的异常就直接抛了出去,有 ...

  8. 第六百二十七天 how can I 坚持

    竟然能上google了,可惜手机装twitter装上登不上呢. 浏览浏览能学学英语啊. 今天又在家待了一天,得戒游戏了,找找能让我疯狂的事情,然后坚持去干吧,加油. 洗澡睡觉.

  9. DEV控件的Gridview1

    DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...

  10. spring框架学习(三)junit单元测试

    spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...