集合框架(Collection  Framework)是Java最强大的子系统之一,位于java.util 包中。集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术。Java集合框架标准化了程序处理对象组的方式。

  集合框架在设计上需要满足几个目标。首先,框架必须是高性能的。基本集合(动态数组、链表、树以及哈希表)的实现是高效率的。很少需要手动编写这些数据引擎中的某一个。其次,框架必须允许不同类型的集合以类似的方式进行工作,并且具有高度的互操作性。再次,扩展或改造必须易于实现。为了满足这些目标,整个集合框架基于一套标准接口进行构造,提供了这些接口的一些可以直接使用的标准实现(如LinkedList、HashSet和TreeSet)。作为一种选择,也可以实现自己的集合。为了方便,提供各种特定目的的实现。最后,必须添加可以将标准数组集成到集合框架中的机制。

  算法是集合机制的另外一个重要组成部分。算法操作集合,并且被定义为Collections类中的静态方法。因此,所有集合都可以使用它们。

  与集合框架密切相关的另一个内容是 Iterator 接口。迭代器为访问集合中的元素提供了通用、标准的方式,每次访问一个元素。因为每个集合都提供了迭代器,所以可以通过Iterator定义的方法访问所有集合类的元素。

  Collection接口是构建集合框架的基础,因为定义集合的所有类都必须实现该接口,Collection是泛型接口

  public interface Collection<E> extends Iterable<E>
其中,E指定了集合中存储的对象类型。Collection接口扩展了 Iterator 接口。
方法 说明
boolean  add(E e)

确保此集合包含指定的元素(可选操作)。
boolean addAll(Collection<? extends E> c)

将指定集合中的所有元素添加到此集合(可选操作)。
void  clear()

从此集合中删除所有元素(可选操作)。
boolean   contains(Object o)

如果此集合包含指定的元素,则返回 true
boolean   containsAll(Collection<?> c)

如果此集合包含指定 集合中的所有元素,则返回true。
boolean   equals(Object o)

将指定的对象与此集合进行比较以获得相等性。
int    hashCode()

返回此集合的哈希码值。
boolean    isEmpty()

如果此集合不包含元素,则返回 true 。 
boolean   remove(Object o)                                 

从该集合中删除指定元素的单个实例(如果存在)(可选操作)。移除返回true
boolean    removeAll(Collection<?> c)

删除指定集合中包含的所有此集合的元素(可选操作)。
default boolean removeIf(Predicate<? super E> filter)

删除满足给定谓词的此集合的所有元素。
boolean    retainAll(Collection<?> c)

仅保留此集合中包含在指定集合中的元素(可选操作)。
int     size()

返回此集合中的元素数。 
Object[]    toArray()                                            

返回一个包含此集合中所有元素的数组。
<T> T[]    toArray(T[] a)

返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。

方法详细信息

  • toArray

  Object[] toArray()
  返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个集合是由数组支持的)。 因此,调用者可以自由地修改返回的数组。此方法充当基于阵列和基于集合的API之间的桥梁。结果一个包含此集合中所有元素的数组 
  • clear

  void clear()

  从此集合中删除所有元素(可选操作)。 此方法返回后,集合将为空。异常  UnsupportedOperationException - 如果此 集合不支持clear操作

  • add

boolean add(E e)
  确保此集合包含指定的元素(可选操作)。 如果此集合由于调用而更改,则返回true 。 (如果此集合不允许重复,并且已包含指定的元素,则返回false。 )支持此操作的集合可能会限制可能添加到此集合的元素。 特别是一些集合拒绝添加null种元素,和其他人将强加可添加元素的类型限制。 收集类应在其文档中明确说明可能添加哪些元素的限制。

如果一个集合拒绝添加一个特定的元素,除了它已经包含该元素之外,它必须抛出异常(而不是返回false )。 这保留了一个集合在此调用返回后始终包含指定元素的不变量。

参数e - 要确保在此集合中的存在的元素
  结果   true如果此集合由于调用而更改
异常
UnsupportedOperationException - 如果此 集合不支持add操作
ClassCastException - 如果指定元素的类阻止将其添加到此集合
NullPointerException - 如果指定的元素为空,并且该集合不允许空元素
IllegalArgumentException - 如果元素的某些属性阻止其添加到此集合
IllegalStateException - 如果由于插入限制,此时无法添加该元素 

Java学习关于集合框架的基础接口--Collection接口的更多相关文章

  1. Java学习之集合框架的迭代器--Iteratorjk及ListItertor接口

    通常情况下,你会希望遍历一个集合中的元素.例如,显示集合中的每个元素.一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象 ...

  2. java学习第六天集合框架.day15

    Set接口 Set集合存储特点: 不允许元素重复 不会记录元素的添加先后顺序 Set只包含从Collection继承的方法,不过Set无法记住添加的顺序,不允许包含重复的元素.当试图添加两个相同元素进 ...

  3. java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)

    集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...

  4. Java学习之集合(Collection接口)

    集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储 集合特点: 1.用于存储对象的容器 2.集合长度可变 3.不可以存储基本数据类型 集合体系的顶层C ...

  5. Java中的集合框架(上)

    Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...

  6. JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

    JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...

  7. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  8. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用 ...

  9. Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

随机推荐

  1. BZOJ1026(数位dp)

    数位dp第二道-就当成搜索,套板子写了写.我写的dp[pos][pre][state0]记录的是当前pos位没有限制时.前面的数是pre时.前面是否都是0时的方案数. #include <cst ...

  2. 什么是极坐标? —— 一点微小的想法 What is Polar Coordinate ? - Some Naive Thoughts about It

    Can you answer these three questions? The answer seems to be trivial, since we can use our eyes to o ...

  3. nodejs on raspi

    一. https://cnodejs.org/topic/54032efa9769c2e93797cd06 其中的 “安装Node.js” 一节 注意事项: 1. 它用的是v0.10.26(很早的版本 ...

  4. 前端之CSS语法及选择器

    一.css语法: css由两大部分组成:选择符和声明,声明由属性和属性值两部分组成; 选择符{属性:属性值;属性:属性值;} 注: a) 属性和属性值之间用冒号连接: b)每条声明结束要加分号: 二. ...

  5. AJPFX总结List的三个子类的特点

    ArrayList:                        底层数据结构是数组,查询快,增删慢.                        线程不安全,效率高.              ...

  6. 死磕 java并发包之AtomicInteger源码分析

    问题 (1)什么是原子操作? (2)原子操作和数据库的ACID有啥关系? (3)AtomicInteger是怎么实现原子操作的? (4)AtomicInteger是有什么缺点? 简介 AtomicIn ...

  7. PKU_campus_2018_A Wife

    思路: 题目链接http://poj.openjudge.cn/practice/C18A/ 先说一个结论,每一天要么7要么0,由此提供一种状态压缩dp的解法. 实现: #include <bi ...

  8. 洛谷P2774 方格取数问题(最小割)

    题意 $n \times m$的矩阵,不能取相邻的元素,问最大能取多少 Sol 首先补集转化一下:最大权值 = sum - 使图不连通的最小权值 进行黑白染色 从S向黑点连权值为点权的边 从白点向T连 ...

  9. 使用docker搭建gitlab 服务器

    本次使用的docker版本为 1.首先需要安装docker. 2.启动docker后,service docker start   3.拉取镜像  docker pull gitlab/gitlab- ...

  10. TebsorFlow低阶API(五)—— 保存和恢复

    简介 tf.train.Saver 类提供了保存和恢复模型的方法.通过 tf.saved_model.simple_save 函数可以轻松地保存适合投入使用的模型.Estimator会自动保存和恢复 ...