Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Collection

Collection

原创
作者头像
想名字好难
修改于 2021-04-06 03:41:03
修改于 2021-04-06 03:41:03
3450
举报
文章被收录于专栏:个人学习记录个人学习记录

Collection 作为集合的一个根接口,定义了一组对象和它的子类需要实现的 众多方法

1、基本操作

代码语言:txt
AI代码解释
复制
 /**
  * 返回此集合中的元素数。 如果此集合包含的元素个数多于Integer.MAX_VALUE,则返回Integer.MAX_VALUE
  */
int size();
代码语言:txt
AI代码解释
复制
/**
 * 判断集合是否为空
 */
boolean isEmpty();
代码语言:txt
AI代码解释
复制
/**
 * 判断该集合是否包含指定元素
 */
boolean contains(Object o);
代码语言:txt
AI代码解释
复制
/**
 *返回迭代器,不保证顺序
 */
Iterator<E> iterator();
代码语言:txt
AI代码解释
复制
/**
 * 添加一个元素
 */
boolean add(E e);
代码语言:txt
AI代码解释
复制
/**
 * 删除一个元素
 */
boolean remove(Object o);

2、集合转化为数组

代码语言:txt
AI代码解释
复制
/**
 * 返回一个包含此集合中所有元素的数组。如果此集合保证其迭代器返回其元素的顺序,则此方法必须以相同的顺序返回元素。
 */
Object[] toArray();
代码语言:txt
AI代码解释
复制
/**
 * 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型
 */
<T> T[] toArray(T[] a);

3、对集合进行操作

代码语言:txt
AI代码解释
复制
/**
 * 是否包含指定集合 c 的全部元素
 */
boolean containsAll(Collection<?> c);
代码语言:txt
AI代码解释
复制
/**
 * 将指定集合 c 中的所有元素添加到此集合中,如果集合有改变返回true
 */
boolean addAll(Collection<? extends E> c);
代码语言:txt
AI代码解释
复制
/**
 * 删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true
 */
boolean removeAll(Collection<?> c);
代码语言:txt
AI代码解释
复制
/**
 * 保留本集合与 c 集合的交集,如果集合有改变就返回 true
 */
boolean retainAll(Collection<?> c);
代码语言:txt
AI代码解释
复制
/**
 * 删除所有元素
 */
void ();

4、新增

代码语言:txt
AI代码解释
复制
/**
 * 作用是按照一定规则过滤集合中的元素
 * jdk 1.8
 */
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;
}


//使用实例
Collection<Person> collection = new ArrayList();

//lambda表达式
collection.removeIf(
    person -> person.getAge() >= 15
);
//或者
collection.removeIf(new Predicate<Person>() {
    @Override
    public boolean test(Person person) {
        return person.getAge() >= 15;
    }
});
代码语言:txt
AI代码解释
复制
/**
 * 可分割迭代器,是Java为了并行遍历数据源中的元素而设计的迭代器,这个可以类比最早Java提供的顺序遍历迭代器  
 *Iterator,但一个是顺序遍历,一个是并行遍历。 
 * jdk 1.8
 */ 
@Override
default Spliterator<E> spliterator() {
    return Spliterators.spliterator(this, 0);
}
代码语言:txt
AI代码解释
复制
/**
 * 返回一个System流
 * jdk 1.8
 */
default Stream<E> stream() {
    return StreamSupport.stream(spliterator(), false);
}
代码语言:txt
AI代码解释
复制
/**
 * 返回一个并发System流
 * jdk 1.8
 */
default Stream<E> parallelStream() {
    return StreamSupport.stream(spliterator(), true);
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 基础(三)——集合源码解析 Collection
前面我们讲到了集合的定义以及集合的 Iterator。我们知道集合分为 Collection和 Map,今天我们的重点是学习 Collection。
蜻蜓队长
2018/08/03
2980
Java 基础(三)——集合源码解析 Collection
Java基础系列(三十九):集合之Collection
可以看出,作为顶级的框架,Collection仅仅是继承了Iterable接口,接下来,我们来看一下Iterable的源码,看看有什么收获。
山禾说
2019/01/21
4960
JDK源码解析之Java.util.Collection
collection继承自Iterable,所以其有Iterable的所有相关的方法。
栗筝i
2022/12/01
2640
《JavaSE-第十九章》之Collection
在没有学习集合前,基本都是用数组存储元素,而数组只适用于元素类型确定以及个数确定,不需要大量的增删的场景。集合却可以完美的解决上述问题,集合在未指定泛型参数时,默认的元素类型为Object,可以存储任意类型的数据,而且无需考虑集合的大小,因为集合的大小是可以动态变化的。所以集合非常适用于做增删元素的场景。
用户10517932
2023/10/07
2250
《JavaSE-第十九章》之Collection
jdk源码追踪-Collection
Collection接口是java最基础,重要的接口之一,它有List,Set,Queue等Java最常用的子接口,这里主要解析Collection这个接口以及它最常用的类的源码实现。
逝兮诚
2019/10/30
3970
【Java入门提高篇】Day18 Java容器类详解(一)Collection接口
  所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。
弗兰克的猫
2018/05/22
5862
【Java入门提高篇】Day18 Java容器类详解(一)Collection接口
Java集合:Collection接口
Collection是一个接口,继承自Iterable。我们先看一下Iterable接口的源码
栗筝i
2022/12/01
4910
【Java入门提高篇】Java集合类详解(一)
  今天来看看Java里的一个大家伙,那就是集合。   集合嘛,就跟它的名字那样,是一群人多势众的家伙,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体。集合就是用来存放和管理其他类对象的地方,也可以叫做容器,你可以把它理解为仓库管家,当你有东西需要存放和管理的时候,就要记得来找它。你也许会说,不是有数组吗?确实,用数组存放一堆相同类型对象也是一个不错的选择,但是有一个很大的缺陷,那就是数组大小只能是固定的,不能从数组里动态添加和删除一个对象,要扩容的时候,就只能新建一个数组然后把原来
弗兰克的猫
2018/05/28
6930
跟我学 Java 8 新特性之 Stream 流(二)关键知识点
我们的第一篇文章,主要是通过一个Demo,让大家体验了一下使用流API的那种酣畅淋漓的感觉。如果你没有实践,我还是再次呼吁你动手敲一敲,自己实实在跑一遍上一篇的Demo。
Java技术栈
2018/07/31
5530
跟我学 Java 8 新特性之 Stream 流(二)关键知识点
Java 8 Stream简介和“复用”的问题
最近工作后开始使用Stream,用起来比较顺手,可以说已经“沉浸于Stream无法自拔”,很少再用foreach循环了。
明明如月学长
2021/08/27
1.2K0
JDK源码分析-Collection
Java 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。
WriteOnRead
2019/08/16
5260
JDK源码分析-Collection
实用技术:Java1.8工作中最常用的14个Stream详细小示例
java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样就可以将多个操作依次串起来。Stream 的创建需要指定一个数据源,比如 java.util.Collection的子类,List或者Set, Map不支持。Stream的操作可以串行stream()执行或者并行parallelStream()执行。
哲洛不闹
2020/06/10
5580
Java 集合深入理解(3):Collection
本文介绍了Java集合框架,包括Collection、Map、Iterator、迭代器、递归、并发和并行编程等相关内容。通过这些介绍,读者可以更好地理解Java集合框架及其在实际编程中的应用。
张拭心 shixinzhang
2018/01/05
1.2K0
Java 集合深入理解(3):Collection
[三]java8 函数式编程Stream 概念深入理解 Stream 运行原理 Stream设计思路
        流不是存储元素的数据结构;相反,它通过一个计算操作的管道,从一个数据源,如数据结构、数组、生成器函数或i/o通道中传递元素
noteless
2018/09/11
2.1K0
[三]java8 函数式编程Stream 概念深入理解 Stream 运行原理 Stream设计思路
java集合【6】-- Collection源码解析
collection在java集合中,算是顶级接口,它继承了iterable接口,不能实例化,只能实例化其子类。之所以需要这样一个接口,是因为java作为面向对象,总是避免不了处理多个对象的情况,要处理多个对象,首先需要容器存储,这个容器就是集合。为什么有了数组,还需要集合,因为数组的功能单一,长度不可变,而有些集合实现类则是对数组操作的封装。
秦怀杂货店
2020/11/20
5800
java集合【6】-- Collection源码解析
【JDK1.8】JDK1.8集合源码阅读——总章
  今天开始阅读jdk1.8的集合部分,平时在写项目的时候,用到的最多的部分可能就是Java的集合框架,通过阅读集合框架源码,了解其内部的数据结构实现,能够深入理解各个集合的性能特性,并且能够帮助自己在今后的开发中避免犯一些使用错误。另外笔者自己也是摸着石头过河,如果有描述不当的地方,希望园友们能够不吝指出,希望能够和大家共同进步!
joemsu
2019/05/25
4770
java.util.Collection[源码解读(下)]
上篇文章介绍了Collection接口的用途,本篇文章来介绍Collection接口的方法。
小诸葛
2020/04/14
5320
【Java基础-1】 Java8新特性Stream详解
Java8的API中添加了一个新的特性: 流,即stream。stream是将数组或者集合的元素视为流,流在管道中流动过程中,对数据进行筛选、排序和其他操作。
云深i不知处
2020/09/16
1.2K0
【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
6240
【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
【两万字】面试官:听说你精通集合源码,接我二十个问题!
这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。
山禾说
2020/07/24
6480
【两万字】面试官:听说你精通集合源码,接我二十个问题!
相关推荐
Java 基础(三)——集合源码解析 Collection
更多 >
LV.0
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档