Java集合总结系列2:Collection接口

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 遍历时的接口,接口逻辑需要在具体的集合类中实现。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

LintCode 最长上升连续子序列题目样例分析1(普通解法)分析2(使用队列)

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列...

862
来自专栏Jack-Cui

541.Reverse String II(String-Easy)

Given a string and an integer k, you need to reverse the first k characters for ...

18510
来自专栏Python爱好者

Java基础笔记15

1688
来自专栏Phoenix的Android之旅

Java面试的基础中的基础

面试时经常从Java的基础知识开始,最基础的部分莫过于Java的集合类型。我们知道Java的集合类型有三种,Set,List,Map,那这三种有什么区别呢。

1011
来自专栏彭湖湾的编程世界

【数据结构】实现字典API:有序数组和无序链表

参考资料 《算法(java)》                           — — Robert Sedgewick, Kevin Wayne 《数据结...

3335
来自专栏谈补锅

C语言之指针变量

  4、指向常量的常量指针:有2个const修改,既不能间接修改变量的值,也不可重新赋值新变量地址

3353
来自专栏java一日一条

Java面试题:如何对HashMap按键值排序

Java中HashMap是一种用于存储“键”和“值”信息对的数据结构。不同于Array、ArrayList和LinkedLists,它不会维持插入元素的顺序。

1142
来自专栏应兆康的专栏

Python 实现双向链表

#!usr/bin/env python #-*- coding:utf-8 -*- """ @author:yzk13 @time: 2018/0...

3866
来自专栏趣谈编程

一文读懂Java泛型中的通配符 ?

之前不太明白泛型中通配符"?"的含义,直到我在网上发现了Jakob Jenkov的一篇文章,觉得很不错,所以翻译过来,大家也可以点击文末左下角的阅读原文看英文版...

1293
来自专栏深度学习与计算机视觉

算法-数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现的次数就是3。 解题思路: 1.首先,遍历数组肯...

2105

扫码关注云+社区

领取腾讯云代金券