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. MT29F8G08ABACA nandflash 参数记录

    跟踪 MT29F8G08ABACA datasheet ,记录里面有关软件的参数 首先,硬件上的特征,page size , oob , block size [](http://images2017 ...

  2. Redis提供的持久化机制(二)

    1.前言 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集 ...

  3. Go Revel - Templates(模板)

    revel使用Go官方的模板库.它会在两个目录查找模板文件: 1.应用的`views`目录以及它的所有子目录 2.revel库自己的`templates`目录 revel为错误页面提供了模板(在`de ...

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

  5. Android——Service

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  6. 【嵌入式】——对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解

    #define GPBCON (*(volatile unsigned long*)0x56000010) 1:volatile 当计算机需要一个数值的时候,会先把内存中的值读取到寄存器,然后下次在使 ...

  7. 【oneday_onepage】——China's Internet users grow to 591 million

    July 17, 2013, 6:29 AM — China's Internet populace grew to 591 million by the end of June, as more n ...

  8. Web API(六):使用Autofac实现依赖注入

    在这一篇文章将会讲解如何在Web API2中使用Autofac实现依赖注入. 一.创建实体类库 1.创建单独实体类 创建DI.Entity类库,用来存放所有的实体类,新建用户实体类,其结构如下: us ...

  9. linux下shellcode提取常用到的命令

    汇编语言的汇编指令: nasm -f elf xxx.asm    生成xxx.o文件 ld -o xxx  xxx.o  生成可执行文件,不用加参数-s ,否则在提取shellcode的十六进制码的 ...

  10. ASP.NET中使用jQuery插件实现图片幻灯效果

    参照网上的资料及提供的jQuery插件实现图片幻灯效果. 1.页面前台代码: //头部引用 <head runat="server"><title>< ...