首页 > 编程语言 >Java源码解析 Collection<E>

Java源码解析 Collection<E>

时间:2023-01-26 13:31:12浏览次数:38  
标签:返回 Java 元素 指定 collection 源码 Collection 集合 null


位置:  java.util.Collection<E>

interface


用途:





参数:<E>



Iterable<E>


子类:


接口:




方法




     int  size();


    返回这个集合中的元素个数,返回为Integer类型, 如果这个集合中的元素个数大于 Integer.MAX_VALUE 那么,就返回 Integer.MAX_VALUE


param:



return:


exception:





     boolean  isEmpty();



    返回 true 如果这个集合里面没有元素



param:



return:



exception:





     boolean  contains(Object o);



    返回 true 如果这个集合中包含特定的元素。更准确的说,返回true 当且仅当集合中存在元素 “e”,满足条 件 (o==null ? e==null : o.equals(e)) .



param: Object o



return:true/false



    ClassCastException      如果指定元素的类型与此collection不兼容



               NullPointerException      如果指定的元素为null,并且此collection不允许null元素




     Iterator<E> iterator();



    返回一个迭代器,不考虑这个迭代器中元素的顺序问题(除非这个集合的一些实现类保证顺序)



param:



return:      Iterator



exception:




     Object[] toArray();



    返回一个数组,里面包含所有集合中的元素,如果集合返回的迭代器中元素的顺序是一定的,那么数组里面返回的元素的顺序应该和迭代器中的一致。



返回的数组与集合的关系是独立的,换句话说,这个方法返回的数组是新建的一个数组,调用者可以随意修改这个数组。



这个方法扮演一个“桥”的角色,在array-based 和collection-based 之间



param:



return:   Object[]



exception:





     <T> T[] toArray(T[] a);



    返回一个数组,包含集合中所有的元素;返回数组的运行时类型是指定数组的。如果集合指定的数组能容纳,则在其中返回。否则,会新建一个数组类型为指定数组类型,长度是该集合的长度



param:



return:



exception:





     boolean  add(E e);



    确保这个Collection 里面包含指定的元素(可选操作)。返回true,如果通过调用collection的结果发生改变.



(返回false,如果这个collection不允许重复记录并且这个集合中已经包含这个需要添加的指定的元素)



collection 支持这个操作需要做限制,哪些元素类型可以添加到这个collection里。特别的,有些collections拒绝添加null元素,而有些明确的限制约束将要添加到集合中元素的类型。集合类需要在文档中明确指出需要添加元素的类型。



如果一个集合拒绝添加一个特定的元素,而不是因为集合中已经包含这个元素的其他原因,那么必须需要抛出异常(比返回false强)。结果是不变的,如下:当调用过这个方法后,这个collection中一定包含这个元素。



param:      E元素存在于此集合要保证



return:      返回true,如果通过调用collection的结果发生改变.



     UnsupportedOperationException      如果这个集合不支持这个操作



     ClassCastExceptio      如果类指定的元素不允许将其添加到此集合     



     NullPointerException    如果这个元素是null 并且 这个集合不允许null 元素



     IllegalArgumentException      如果元素的某些属性不允许将其添加到此集合



     IllegalStateException      如果元素不能在这个时候加入,由于插入限制     





     boolean  remove(Object o);



    从这个集合中移除指定元素的单个实例,如果存在。更正式的,移除元素e,如果collection中存在一个或者多个元素这样的元素满足 (o==null ? e==null : o.equals(e)) 如果此collection包含指定的元素(或者,如果此collection由于调用而更改的结果),则返回true。



param:     o  - 元素从这个集合中删除(如果存在)



return:          返回true 如果由于调用 出现元素被移除了的结果



ClassCastException  如果指定元素的类型与此collection不兼容



NullPointerException



UnsupportedOperationException 如果这个集合不支持remove 这个方法







       boolean  containsAll(Collection<?> c);



    返回true 如果这个集合中包含指定集合中的所有的元素



param:     c 集合在此几个中被检查是否包含



return:      返回true 如果这个集合中包含指定集合中的所有的元素



ClassCastException 如果指定集合中的一个或者多个元素的类型与此collection不兼容



NullPointerException 如果指定集合中包含一个或者多个null 元素,但是此collection不允许null 元素 




     boolean  addAll(Collection<?  extends  E> c);



    添加所有指定集合中的元素此collection中(可选操作)。此操作的行为是不确定的,如果指定的集合被修改,在执行这个方法操作过程中。这意味着,此调用的行为是不确定的,如果指定的集合是这样的集合,这个集合非空。



param:c -collection 包含将要被添加的所有元素的集合



return:     返回true如果此collection 由于调用而改变的结果



     UnsupportedOperationException 如果这个addAll操作在这个集合中不支持



ClassCastException



NullPointerException 如果指定集合中包含null元但是此collection不允许null元素,或者指定的集合就是null 



     boolean removeAll(Collection<?> c);



    移除掉所有这个集合中和指定集合中共有的元素(可选操作),这个方法return之后,这个集合中就没有和指定集合中相共有的元素了。



param:  参数c集合中包含将要在这个集合中要移除的元素



return:     返回true 如果此collection 由于调用而更改的结果



     UnsupportedOperationException 如果这个removeAll操作在这个集合中不支持的话



ClassCastException 如果集合中存在一个或者多个元素与指定集合的类型不匹配(可选)



NullPointerException 如果集合中存在一个或者多个null元素,但是和指定集合中不允许有null元素,或者指定的集合是null




     boolean retainAll(Collection<?> c);



    只保留集合中仅有的在指定集合中的元素(可选操作),换句话说,remove掉所有集合中的那些指定集合中没有的元素



param:     c 集合中将要保留元素的指定集合



return:     返回true  如果此collection由于调用而更改的结果



UnsupportedOperationException  如果这个retainAll操作在这个集合中不支持的话,会抛这个异常    



ClassCastException 如果集合中存在一个或者多个元素与指定集合的类型不匹配(可选)



NullPointerException 如果集合中存在一个或者多个null元素,但是和指定集合中不允许有null元素,或者指定的集合是null  




     void  clear();



    移除集合中的所有元素(可选操作),这个方法执行后,集合是empty的



param:



return:



UnsupportedOperationException 如果这个clear操作在这个集合中不支持的话,会抛这个异常




     boolean  equals(Object o);



    比较指定对象是否和此collection相等



Collection中没有增加规定,拿过来Object.Equals. 程序员直接实现Collection要非常小心,如果选择重写Object.equals.(换句话说,创建一个类是Collection,而不是List或者Set). 这是没有必要的话,最简单的动作,当然是依靠对象的实现,但实现者可能希望实现代替默认的“值比较”,“参考比较。”(该List和Set接口的任务,例如值比较。)






Object.equals方法 通常的约定的约定是等于必须是对称的。(换句话说,a.equals(b) 当且仅当b.equals(b)). List.equals和Set.equals 的约定声明是lists 仅仅等于另一个lists, sets也是一样。因此,一个collection类中的自定义equals方法既不实现List也不实现Set接口那么一定要返回false 当这个collection与任何list或者set比较的话。(按照同样的逻辑,不可能写出一个类同时实现Set和List接口)






overrides:     Object中的equals方法



param:     o 对象,将要和这个collection比较的对象



return:     返回true 如果这个collection等于指定的对象



exception:




     int  hashCode();



    返回此collection的哈希值。Collection接口不会对通用约定的Object.hashCode方法增加规定,实现人员需要注意任何类如果重写了Object.equals方法必须也要重写Object.hashCode方法,以适应通用约定的Object.hashCode方法。特别一点,c1.equals(c2) 意味着c1.hashCode() = c2.hashCode()






overrides:     Object中的hashCode方法



param:



return:      返回此collection的哈希值。



exception:


标签:返回,Java,元素,指定,collection,源码,Collection,集合,null
From: https://blog.51cto.com/u_15939105/6023432

相关文章

  • Java JDK安装文件提取为绿色版(免安装版)
    前言在服务端部署Java项目时,可能会根据项目的环境考虑使用不同的JDK版本,在使用时根据不同项目切换jdk版本很不方便。另外,安装的jdk会自动安装jdk_update,但是我又不想让jdk......
  • LESSON THREE:Java入门环境搭建
    Java入门环境搭建Java如何诞生改进了c与c++的一些难点;1995年诞生;三大版本:JavaSE:标准版(桌面程序、控制台开发、简单游戏...)JavaME:嵌入式开发JavaEE:E企业级开发(web......
  • 【学懂Java】(六)常用类
    一.包装类1.概念包装类是将基本类型封装到一个类中,包含属性和方法,方便对象操作包装类位于java.lang包中2.转换包装类与基本数据类型包装类是将基本数据类型封装成一个类,包......
  • 精华推荐 | 【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿Rocket
    精华推荐|【深入浅出RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程上篇:分析对应总体消费流程的判断和校验以及限流控制和回......
  • 你知道这个提高 Java 单元测试效率的 IDEA 插件吗
    前言2023年我们公司主抓代码质量,所以单元测试必不可少,而且都写到了年底的绩效目标中了。在考虑如何达成这个目标的过程中,我发现了一个关于单元测试的IDEA插件——SquareTe......
  • C++ 和 Java 的区别(A C++ programmer's perspective)
    C++开发,周末看了2天Java教程,直接上手写Java。说下自己最明显的感受,用的不多,理解不一定对:【JVM】Java编译+解释,运行在JVM,跨平台移植方便,但执行速度/效率比C++低......
  • 读Java8函数式编程笔记01_Lambda表达式
    1. Java8函数式编程1.1. 没有单子1.2. 没有语言层面的惰性求值1.3. 没有为不可变性提供额外支持1.4. 集合类可以拥有一些额外的方法:default方法2. 现实世界中......
  • 【Javaweb】Servlet八 | 请求转发的代码实现【详解】
    请求的转发什么是请求的转发?请求转发是指,服务器收到请求时,从一次资源转到另一个资源的操作叫做请求转发。 部分代码//获取请求的参数(办事的材料)查看......
  • JavaScript:判断数组对象值是否相同的函数声明
    varobj1={name:"w",};varobj2={name:"w",};functionisObjectValueEqual(a,b){//判断两个对......
  • 06-JavaSE:面向对象编程
    面向过程的思维模式面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么、第二步做什么的细节中。这种思维模式适合处理简单的事情,比如:上厕所。如果面对......