JDK源码解析之Java.util.Collection
Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素,JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
一、源码解析
1、接口定义
public interface Collection<E> extends Iterable<E>{}
collection继承自Iterable,所以其有Iterable的所有相关的方法。
2、查询方法
// 返回数组的长度,如果数组的长度大于Integer最大值,返回Integer最大值。int size();// 判断该集合是否为有元素boolean isEmpty();// 判断元素o是否在集合中boolean contains(Object o);// 获取集合的交集,如果集合有改变那么返回为true,否则返回为false。boolean containsAll(Collection<?> c);
3、操作集合元素的方法
// 将元素E添加到该集合中boolean add(E e);// 将集合c添加到该集合中boolean addAll(Collection<? extends E> c);// 将该集合清空void clear();// 从集合中删除o元素boolean remove(Object o);// 从集合中删除c集合boolean removeAll(Collection<?> c); // 仅保留该集合中那些也包含在指定集合c中的元素boolean retainAll(Collection<?> c);// 删除满足给定谓词的此集合的所有元素default boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);boolean removed = false;final Iterator<E> each = iterator();while (each.hasNext()) {if (filter.test(each.next())) {each.remove();removed = true;}}return removed;}
4、其他方法
// 返回一个包含此集合中所有元素的数组Object[] toArray();// 返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型<T> T[] toArray(T[] a);// 获取集合的流,返回可能并行的以此集合作为源的Streamdefault Stream<E> stream() {return StreamSupport.stream(spliterator(), false);}// 获取集合的并行default Stream<E> parallelStream() {return StreamSupport.stream(spliterator(), true);}// 获取迭代器Itertorpublic abstract Iterator<E> iterator();// 返回集合的Spliteratordefault Spliterator<E> spliterator() {return Spliterators.spliterator(this, 0);}// 判断两个集合是否相同boolean equals(Object o);// 获取集合的hashcodeint hashCode();
二、总结
Collection接口是最基本的集合接口,它在继承了Iterable接口方法的同时,提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现,在后面我会向大家一一介绍。
JDK源码解析之Java.util.Collection相关推荐
- JDK源码解析之Java.util.Collections
java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. 一.源码解析 1.不可实例 ...
- JDK源码解析之java.util.AbstractCollection
AbstractCollection类提供了collection的实现类应该具有的基本方法,具有一定的普适性,可以从大局上了解collection实现类的主要功能. java.util.Abstrac ...
- JDK源码解析之java.util.ListIterator
ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问.可以通过调用listIterator()方法产生一个指向List开始处的List ...
- JDK源码解析之java.util.Iterator和java.lang.Iterable
在Java中,我们可以对List集合进行如下几种方式的遍历:第一种就是普通的for循环,第二种为迭代器遍历,第三种是for each循环.后面两种方式涉及到Java中的iterator和iterabl ...
- JDK源码解析之 Java.lang.Compiler
Compiler类提供支持Java到本机代码编译器和相关服务.在设计上,它作为一个占位符在JIT编译器实现. 一.源码部分 public final class Compiler {private C ...
- JDK源码解析之 java.lang.Exception
异常.是所有异常的基类,用于标识一般的程序运行问题.这些问题通常描述一些会被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable public class Exce ...
- JDK源码解析之 java.lang.Error
java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable ...
- JDK源码解析之 java.lang.Thread
位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换 ...
- JDK源码解析之 java.lang.Integer
teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一.类定义 public final class Integer extends Number imp ...
最新文章
- html5通html5通,HTML5 history详解
- 用vue优雅地编写UI组件的几条指导原则
- c# 18位身份证源代码
- c# try-finally有什么用
- 计算机视觉开源库OpenCV之CommandLineParser使用方法
- oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
- 1001 Calculate a + b
- C语言试题六十六之请编写函数实现三个数从小到大排序
- 操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...
- NOIP2017年11月9日赛前模拟
- rocketmq存储结构_RocketMQ消息存储
- iOS:删除、插入、移动单元格
- 利用getData获取图片中的图表信息数据
- 一款小工具DeskPinsEx开发笔记
- 怎么解决图片用PSCC打开后,白色部分全部呈现米黄色?
- 7-45 实验8_2_推销员的便条 (100 分)
- 测试用例的设计方法_场景设计法
- MATLAB图像融合分割系统
- 使用uni-app把h5网页封装成app
- cpu的基本结构及其工作原理
热门文章
- java403forbidden_java – Spring boot – 返回403 Forbidden而不是重定向到登录页面
- 北理在线作业答案c语言,北理工19春《面向对象程序设计》在线作业【标准答案】...
- java crontriggerbean_java – 使用JobStoreTX为石英聚类配置CronTriggerFactoryBean
- oracle rollup分组没有数据时为0_数据库周刊19│GBASE适配鲲鹏;MySQL窗口函数;OGG双向数据同步……...
- python语言发明者 google_看看9种编程语言的发明者是怎么说的
- python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条
- php sql查询两个表语句,sql多表查询语句与方法
- 4 插件模块_设计师必备的ps插件推荐
- php 文件保存函数,php 写入和读取文件函数
- modern android5.1,Modern摩登印