1:Iterable接口,实现这个接口的类对象可以进行迭代

 package java.lang;
import java.util.Iterator;
/**
* 实现这个接口的类所创建的对象可以进行迭代
*/
public interface Iterable<T> { /**
* 调用这个方法会返回迭代器,迭代器可以理解为操纵杆,可以操作某个对象
*/
Iterator<T> iterator();
}

2:Collection类,它是List以及Set的父类

 package java.util;

 /**
* 这个接口继承了Iterable接口,那么它的子孙类实例化时就可以迭代输出
*/ public interface Collection<E> extends Iterable<E> {
// Query Operations /**
* 获取集合长度
* 返回这个集合中元素的个数,如果集合中包含元素数量超过整数所能表示的最大值,那么返回这个最大值,
* 这种超过最大值的情况基本上不存在,如果存在,内存应该早就溢出了。
*/
int size(); /**
* 判断集合是否为空
* 如果集合中没有任何元素,返回true
*/
boolean isEmpty(); /**
* 判断集合中是否包含某个元素
* 如果集合中包含指定的元素,返回true,集合中至少包含一个元素,可以为null或者其他元素
* 比较方式:o==null?e==null:o.equals(e)
*/
boolean contains(Object o); /**
* 这个方法返回一个迭代器,可以对集合中元素进行遍历
*/
Iterator<E> iterator(); /**
* 将集合转化为数组
* 返回一个数组,如果集合中元素是有序的,那么返回的数组也是相同的顺序
* 这个方法为集合和数组之间搭建了互相转换的桥梁
*/
Object[] toArray(); /**
* 此方法返回一个指定类型的数组,如果指定的数组的容量大于集合的容量,那么直接将集合中的
* 元素放到数组中返回,否则重新创建一个新数组
*/
<T> T[] toArray(T[] a); // Modification Operations /**
* 添加元素到集合中,添加成功返回true,否则返回false
*/
boolean add(E e); /**
* 从集合中移除某个对象,移除成功返回true,否则返回false
*/
boolean remove(Object o); // Bulk Operations /**
* 判断集合中是否包含指定集合中所有元素,是返回true,否则返回false
*/
boolean containsAll(Collection<?> c); /**
* 添加指定集合的所有元素到集合中,成功返回true,否则返回false
*/
boolean addAll(Collection<? extends E> c); /**
* 在当前集合中删除指定集合中包含的元素,成功返回true,否则返回false
*/
boolean removeAll(Collection<?> c); /**
* 保留指定集合中包含的元素,换句话说就是删除指定集合中没有的元素
*/
boolean retainAll(Collection<?> c); /**
* 清空集合中所有的元素
*/
void clear(); // Comparison and hashing /**
* 比较两个对象是否相等
*/
boolean equals(Object o); /**
* 获取hashcode的值
*/
int hashCode();
}

3:List集合继承了Collection集合

 package java.util;

 public interface List<E> extends Collection<E> {

     int size();

     boolean isEmpty();

     boolean contains(Object o);

     Iterator<E> iterator();

     Object[] toArray();

     <T> T[] toArray(T[] a);

     boolean add(E e);

     boolean remove(Object o);

     boolean containsAll(Collection<?> c);

     boolean addAll(Collection<? extends E> c);
/**
* 在指定位置index插入指定集合的元素
*/
boolean addAll(int index, Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c); void clear(); boolean equals(Object o); int hashCode(); /**
* 根据索引index获取指定的元素
* @param index
* @return
*/
E get(int index); /**
* 替换指定位置的元素,返回这个位置的元素
* @param index
* @param element
* @return
*/
E set(int index, E element); /**
* 在指定位置插入元素,索引处元素依次向右移动
* @param index
* @param element
*/
void add(int index, E element); /**
* 移除指定位置的元素
* @param index
* @return
*/
E remove(int index); // Search Operations /**
* 返回集合中第一次出现指定元素的索引,如果没有返回-1
*/
int indexOf(Object o); /**
* 返回指定元素的索引,从最后一个元素开始查找
* @param o
* @return
*/
int lastIndexOf(Object o); // List Iterators /**
* 返回一个list的迭代器
*/
ListIterator<E> listIterator(); /**
* 返回一个list的迭代器,从指定位置开始
*/
ListIterator<E> listIterator(int index); // View /**
* 返回一个子集,从fromIndex开始到toIndex结束
*/
List<E> subList(int fromIndex, int toIndex);
}

源码分析一(Iterator、Collection以及List接口)的更多相关文章

  1. Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)

    一.基本概念 迭代器是一个对象,也是一种设计模式,Java有两个用来实实现迭代器的接口,分别是Iterator接口和继承自Iterator的ListIterator接口.实现迭代器接口的类的对象有遍历 ...

  2. 【JDK】JDK源码分析-List, Iterator, ListIterator

    List 是最常用的容器之一.之前提到过,分析源码时,优先分析接口的源码,因此这里先从 List 接口分析.List 方法列表如下: 由于上文「JDK源码分析-Collection」已对 Collec ...

  3. Spring源码分析——资源访问利器Resource之接口和抽象类分析

    从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架——Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每 ...

  4. Spring5源码分析之启动类的相关接口和注解

    一些基础但是核心的知识总结: Spring Boot项目启动的时候需要加@Configuration. @ComponentScan @Configuration + @Bean 把第三方jar包注入 ...

  5. LevelDB源码分析--使用Iterator简化代码设计

    我们先来参考来至使用Iterator简化代码2-TwoLevelIterator的例子,略微修改希望能帮助更加容易立即,如果有不理解请各位看客阅读原文. 下面我们再来看一个例子,我们为一个书店写程序, ...

  6. 【JDK】JDK源码分析-ArrayList

    概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」. 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变. ...

  7. Java集合【5】-- Collections源码分析

    目录 一.Collections接口是做什么的? 二.Collections源码之大类方法 1.提供不可变集合 2.提供同步的集合 3.类型检查 4.提供空集合或者迭代器 5.提供singleton的 ...

  8. Spring源码分析——资源访问利器Resource之实现类分析

    今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 File ...

  9. dubbo源码分析02:服务引用

    一.何时创建服务引用 引用官方文档的原话,如果将Dubbo托管在Spring-IOC容器下,Dubbo服务引用的时机有两个,第一个是在Spring容器调用ReferenceBean的afterProp ...

随机推荐

  1. 宇宙最强spacemacs

    这个标题背后的潜台词其实是:逼格是什么炼成的? 此处省略一万字. Emacs就不多说了,神之编辑器,但其快捷键实在是....Evil.好啦,现在来了Spacemacs,结合Vim与Emacs二者的优点 ...

  2. gcc命令中参数c和o混合使用的详解

    gcc -c a.c 编译成目标文件a.o gcc -o a a.o 生成执行文件a.exe gcc a.c 生成执行文件a.exe gcc -o a -c a.c 编译成目标文件a gcc -o a ...

  3. PHP——大话PHP设计模式——链式操作

  4. Java编程的逻辑 (8) - char的真正含义

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  5. Linux查看cpu个数

    [root@lidongbo~]# cat /proc/cpuinfo processor       : 0 vendor_id       : GenuineIntel cpu family    ...

  6. 代码备忘, TODO宏实现

    代码备忘, TODO宏实现 我们平时在开发过程中, 往往并非憋足气一股脑敲完所有代码.每一个模块, 每一个函数的实现总有个先后顺序. 又或者哪个部分须要做调整, 改动- 所以, 我们须要有一个东西, ...

  7. 局域网内的机器不能ping通虚拟机,但是虚拟机可以ping通局域网的机器

    将虚拟机的网络网络适配器模式改成桥接模式即可: 一.选择虚拟机里面的设置: 二.在虚拟机设置界面将网络适配器模式改成桥接模式

  8. 在android程序中打开另一个应用程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名 ...

  9. orcale存储过程学习之路--存储过程实例(三)

    --创建表 create table TESTTABLE(  id1  VARCHAR2(12),  name VARCHAR2(32))select t.id1,t.name from TESTTA ...

  10. 动态规划--最长上升子序列(Longest increasing subsequence)

    前面写了最长公共子序列的问题.然后再加上自身对动态规划的理解,真到简单的DP问题很快就解决了.其实只要理解了动态规划的本质,那么再有针对性的去做这方的题目,思路很快就会有了.不错不错~加油 题目描述: ...