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. 【Unity笔记】寻路导航Navigation中的区域Areas与消耗Cost

    Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可 ...

  2. 阿里云 Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid password

    如果你是买的阿里云的redis服务的话,不要被这个ERR invalid password所迷惑了. 你应该去检查一下你买的服务有没有设置白名单. 像mysql和mongodb的服务如果连不上的话也可 ...

  3. PostgreSQL Table Partitioning<转>

    原创文章,转载请务必将下面这段话置于文章开头处(保留超链接).本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/13/SQL3_partiti ...

  4. linux进程管理(四)

    [教程主题]:进程管理 [1]进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如自 ...

  5. [算法]从一道题引出variable-precision SWAR算法

    苏君君出了一道题,是牛客网上面的: 输入一个int型整数,输出该数二进制表示中1的个数.其中负数用补码表示. 其实这道题并不难,大家很容易想到的解法是转成字符串的思路,即如下所示: public st ...

  6. jce_policy安装【java密码扩展无限制权限策略文件安装】

    下载与JDK或JRE对应版本的jce文件包,当前机器的jdk为1.8,所以下载jce_policy-8.zip. 下载地址:http://www.oracle.com/technetwork/java ...

  7. mapreduce编程(一)-二次排序

    转自:http://blog.csdn.net/heyutao007/article/details/5890103 mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变. 这个 ...

  8. 关于Unity中关节的使用(二)

    导入 1.创建工程 2.导入joint_scene.unitypackage 3.运行发现机械爪子摇来摇去,因为line节点下面的子节点之间相互碰撞带动的关系 4.为了消除这种乱摇,我们在右上角添加一 ...

  9. Android hide Navigation bar

    最近一个app需要隐藏Navigation bar导航栏. 参考文档 http://blog.csdn.net/zwlove5280/article/details/52823128 http://j ...

  10. Redis系列-php怎么通过redis扩展使用redis

    From: http://blog.csdn.net/love__coder/article/details/8691679 通过前面几篇blog,我们应该对redis有个大致的认识,这里再讲解下,p ...