java.util.List 源码分析(JDK1.7)

---------------------------------------------------------------------------------

java.util.List是一个接口,它的定义如下:

public interface List extends Collection {

// 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接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问

---------------------------------------------------------------------------------

下面来看看java.util.List中具体有哪些方法:

从下面的表格中可以看出java.util.List接口中一共有25个方法:

其中查询操作6个;修改操作2个;批量操作6个;比较和哈希操作2个;位置访问操作4个;位置查询操作2个;List Iterator操作2个;视图操作1个;(用浅蓝色字体标出的是java.util.List接口新增的方法,其余的都是从java.util.Collection中来的。  (~_~ 真是不嫌事情多,提供了25个方法需要由其扩展类来实现...))

查询操作

int size()

返回列表中的元素数。如果列表包含多于Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE

boolean isEmpty()

如果列表不包含元素,则返回true

boolean contains(Object o)

如果列表包含指定的元素,则返回true。

Iterator iterator()

返回按适当顺序在列表的元素上进行迭代的迭代器

Object[] toArray()

返回按适当顺序包含列表中的所有元素的数组

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 listIterator()

返回此列表元素的列表迭代器

ListIterator listIterator(int index)

返回列表中元素的列表迭代器

视图操作

List subList(int fromIndex,int toIndex)

返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图

再来看看下图:

---------------------------------------------------------------------------------

java.util.List源码如下:(看看下面的源码,定义的很规范,各种操作都有-----> 此时应该想到它的实现类该有多可怜,要实现多少方法呀。~_~)

package java.util;

public interface List extends Collection {

// Query Operations

int size();

boolean isEmpty();

boolean contains(Object o);

Iterator iterator();

Object[] toArray();

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 listIterator();

ListIterator listIterator(int index);

// View

List subList(int fromIndex, int toIndex);

}

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的. 1.ArrayList 定义 ArrayList 是一个用数组实 ...

随机推荐

linux添加时间提示符

给PS1添加\t [root@lanny ~]# echo $PS1 [\u@\h \W]\$ [root@lanny ~]# export PS1="[\u@\h \W\t]\$&quot ...

PHP 常用正则汇总

平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:    }|d{})-((([-]{}))|([|]))-(([-]([-]{}))|([|]))$/   ([-]{}) ...

Kinect For Windows V2开发日志二:Kinect V2的基本参数

以下内容节选自Heresy的博客:   彩色影像:1920 x 1080 @ 30 / 15 FPS(根据环境亮度) 深度影像:512 x 424 @ 30 FPS.16bit 距离值(mm).可侦测 ...

CentOS 5 64bit 编译安装MySQL报错

报错情况:   在执行./configure时出现configure: error: No curses/termcap library found 解决方法: ./configure时加上参数--w ...

在C语言中以编程的方式获取函数名

仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及代码分析器,经常会需要在运行时访问 ...

Tomcat迁移到WebsphereURL获取中文参数乱码问题

URL携带中文参数时,tomcat通常用两种方法可以解决中文乱码问题: String param = new String(request.getParameter("param &quot ...

restful 风格的理解

rest   其实就是representation    status   transfer(表现层状态转换) restful 风格的API具有如下特征: 1. 每个URI  包含一种资源,而且URI ...

Android 性能优化(一)内存篇

欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/54377370 本文出自:[余志强的博客] 本博客同时也发布在 Hoo ...

递归求6的阶乘(考虑int类型溢出)

编码 public class Factorial { public static void main(String[] args) { System.out.println(fac(6)); } p ...

买了第一台mac

今天,我的第一台mac到手了.是Macbook air 13.3寸屏的.正好这几天bestbuy大打折,索性入手了一台15年最低配的,一共只花了$750,包括税. 还是有点舍不得,而且用不习惯.

java list e 查找_源码(04) -- java.util.ListE相关推荐

  1. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

  2. JAVA多小区物业管理系统源码,Java物业系统源码

    JAVA多小区物业管理系统源码,Java物业系统源码 查看更多数据 源码功能介绍 1. 统计分析 以小区为单位,统计如下数据: 小区总栋数 小区总户数 小区总人数 小区租户数量 小区每月收费金额统计 ...

  3. java飞机大战编程_[源码和文档分享]Java飞机大战游戏设计与实现

    1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...

  4. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  5. java记事本技术参数_[源码和文档分享]基于JAVA的记事本

    一.绪论 现如今,电脑已经成为了每家每户甚至是每个人手头都必有的一种实用性工具,它改变了人们的生活,大大提高了人们的工作效率.在此基础上,电脑端的记事本应用一直是每台电脑所必备的实用性应用,不管是在台 ...

  6. java string is empty_从源码分析java.lang.String.isEmpty()

    今天在写代码的时候用到了java.lang.String.isEmpty()的这个方法,之前也用过,今天突发奇想,就看了看源码,了解了解它的实现方法,总结出来,大家可以交流交流. 通常情况下,我们使用 ...

  7. java 仿qq庅_[源码和文档分享]基于java 的仿QQ聊天工具

    一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...

  8. java单链表通讯录_[源码和文档分享]C++实现的基于链表的通讯录管理系统

    摘 要 随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,为我们的学习和工作带来极大的方便.很多人都使用过传统的纸质通讯录,与之不同的另外一种管理方式--程序通讯录管理.程序通讯 ...

  9. java凭证加盖电子印章_源码分享:在pdf上加盖电子签章

    publicvoidsign(Stringsrc/ /需要签章的pdf文件路径 ,Stringdest/ / 签完章的pdf文件路径 ,ImageDataimg/ / 印章图片 ,intpageNum ...

最新文章

  1. linux关闭防火墙stop,linux如何关闭防火墙
  2. 在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?
  3. 做iOS开发的这2年:30而立投身iOS开发嫌晚?
  4. vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?
  5. Git--生成公钥和私钥并添加gitlab访问权限
  6. 如何在linux查找虚拟机主机号_Linux主机名如何重命名?
  7. Hyper-V云解决方案-IT产业新变革
  8. 电子工程师必须知道的12个知识
  9. Hadoop面试题总结(大数据面试)
  10. 20款英文LOGO字体
  11. 肥胖和食物成瘾中脑 - 肠道 - 微生物组的相互作用
  12. [LOL自走棋] 种族职业数据
  13. 创品牌强农精品培育消费引领 国稻种芯百团计划行动发布
  14. 表格对决CSS--一场生死之战 (转自“清清月儿”)
  15. 想要画漫画?掌握风格很关键!
  16. maven学习记录:maven专栏简介
  17. 一款可以排查重复照片,清理多余照片的照片管理软件,使用PowerPhotos的图像浏览器快速查看照片
  18. @Value为啥取不到值
  19. Python:条件判断和逻辑表达式
  20. 2019智能手表推荐_2019年最佳Android Wear智能手表选购清单

热门文章

  1. 加密、数字签名和数字证书
  2. Django 博客开发教程 6 - 真正的 Django 博客首页视图
  3. linux stat 命令查看文件信息
  4. Oracle单组函数
  5. ————————C语言中快速排序方法——————————————
  6. 1.7 LINUX启动流程
  7. 以太网峰会:网络管理员已成濒危职业
  8. sql2012 数据库连接错误
  9. Linux2.6内核本地提权
  10. iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架