Collection 接口是 Java 集合类的一个根接口,Java 在 Collection 接口中定义了许多通用的数据操作类方法以及判断类方法。

通过查看 API 文档或源码的方式,我们可以了解到 Collection 接口中的方法大致分为两类:操作类方法和判断类方法。

操作类方法

  • boolean add(E e);
  • boolean addAll(Collection<? extends E> c);
  • boolean remove(Object o);
  • boolean removeAll(Collection<?> c);
  • void clear();
  • boolean retainAll(Collection<?> c);    仅仅保存集合c中的元素
  • Iterator<E> iterator();

判断类方法

  • boolean contains(Object o);
  • boolean containsAll(Collection<?> c);
  • boolean isEmpty();
  • int size();

Collection 接口中定义的这些方法都是 List、Set、Queue 这3种数据结构所共有的一些行为,因此适合作为父级接口的方法。

查看 Java 源码我们可以看到 Collection 接口还继承了 Iterable<E> 接口:

public interface Collection<E> extends Iterable<E>

而 Iterable<E> 接口定义如下:

/**
* Implementing this interface allows an object to be the target of
* the "foreach" statement.
*
* @param <T> the type of elements returned by the iterator
*
* @since 1.5
*/
public interface Iterable<T> { /**
* Returns an iterator over a set of elements of type T.
*
* @return an Iterator.
*/
Iterator<T> iterator();
}

也就是说如果一个对象实现了这个接口,那么这个对象就可以用 foreach 循环读取集合元素。

可以看到在 Iterator<T> 中有一个 Iterator<T> 接口,其定义如下:

public interface Iterator<E> {

    boolean hasNext();

    E next();

    void remove();
}

Iterator<T> 接口定义了进行 foreach 遍历时的接口,接口逻辑需要在具体的集合类中实现。

最新文章

  1. 不透明度opacity进阶
  2. Tensorflow 变量的共享
  3. 关于maven
  4. 【USACO 1.4】Mother&#39;s Milk
  5. Spark在Yarn上运行Wordcount程序
  6. Careercup - Facebook面试题 - 4907555595747328
  7. [工具] slf4j-api、slf4j-log4j12以及log4j之间的关系
  8. Node.js包(JXcore)
  9. Qt编程之右键单击QTreeWidgetItem弹出菜单
  10. sqlplus 一次奇葩问题 HTTP proxy setting has incorrect value
  11. AQS详解
  12. C# String 与 byte 互转
  13. 在 Windows系统中编译node.js 源代码
  14. 【转】Uiautomator Api浅析
  15. Asp.Net MVC页面静态化功能实现二:用递归算法来实现
  16. 笔记一:OOAD与UML
  17. 2.10 工具使用 after effects(图形视频处理软件)
  18. 【webpack学习笔记】a06-生产环境和开发环境配置
  19. vue中生成二维码
  20. JavaScript学习-1

热门文章

  1. shell-早间学习,每日一点-5
  2. Raid0、Raid1、Raid0+1、Raid3和Raid5 几种磁盘阵列区别
  3. java学习笔记之线程(Thread)
  4. Log日志规范
  5. struts2中Action到底是什么,怎么理解
  6. 面向对象 &quot;一&quot;
  7. maven配置文件setting.xml字段注释
  8. javascript中parseint和number的区别
  9. 使用js实现ajax的get请求步骤
  10. 【阿里聚安全技术公开课】移动APP漏洞风险与解决方案