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

Collection

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

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
可以看出,作为顶级的框架,Collection仅仅是继承了Iterable接口,接下来,我们来看一下Iterable的源码,看看有什么收获。
山禾说
2019/01/21
5110
Java集合:Collection接口
Collection是一个接口,继承自Iterable。我们先看一下Iterable接口的源码
栗筝i
2022/12/01
5440
jdk源码追踪-Collection
Collection接口是java最基础,重要的接口之一,它有List,Set,Queue等Java最常用的子接口,这里主要解析Collection这个接口以及它最常用的类的源码实现。
逝兮诚
2019/10/30
4210
JDK源码解析之Java.util.Collection
collection继承自Iterable,所以其有Iterable的所有相关的方法。
栗筝i
2022/12/01
2780
【JDK1.8】JDK1.8集合源码阅读——总章
  今天开始阅读jdk1.8的集合部分,平时在写项目的时候,用到的最多的部分可能就是Java的集合框架,通过阅读集合框架源码,了解其内部的数据结构实现,能够深入理解各个集合的性能特性,并且能够帮助自己在今后的开发中避免犯一些使用错误。另外笔者自己也是摸着石头过河,如果有描述不当的地方,希望园友们能够不吝指出,希望能够和大家共同进步!
joemsu
2019/05/25
5080
【Java入门提高篇】Day18 Java容器类详解(一)Collection接口
  所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。
弗兰克的猫
2018/05/22
6022
【Java入门提高篇】Day18 Java容器类详解(一)Collection接口
《JavaSE-第十九章》之Collection
在没有学习集合前,基本都是用数组存储元素,而数组只适用于元素类型确定以及个数确定,不需要大量的增删的场景。集合却可以完美的解决上述问题,集合在未指定泛型参数时,默认的元素类型为Object,可以存储任意类型的数据,而且无需考虑集合的大小,因为集合的大小是可以动态变化的。所以集合非常适用于做增删元素的场景。
用户10517932
2023/10/07
2540
《JavaSE-第十九章》之Collection
【Java入门提高篇】Java集合类详解(一)
  今天来看看Java里的一个大家伙,那就是集合。   集合嘛,就跟它的名字那样,是一群人多势众的家伙,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体。集合就是用来存放和管理其他类对象的地方,也可以叫做容器,你可以把它理解为仓库管家,当你有东西需要存放和管理的时候,就要记得来找它。你也许会说,不是有数组吗?确实,用数组存放一堆相同类型对象也是一个不错的选择,但是有一个很大的缺陷,那就是数组大小只能是固定的,不能从数组里动态添加和删除一个对象,要扩容的时候,就只能新建一个数组然后把原来
弗兰克的猫
2018/05/28
7220
java集合【6】-- Collection源码解析
collection在java集合中,算是顶级接口,它继承了iterable接口,不能实例化,只能实例化其子类。之所以需要这样一个接口,是因为java作为面向对象,总是避免不了处理多个对象的情况,要处理多个对象,首先需要容器存储,这个容器就是集合。为什么有了数组,还需要集合,因为数组的功能单一,长度不可变,而有些集合实现类则是对数组操作的封装。
秦怀杂货店
2020/11/20
6270
java集合【6】-- Collection源码解析
java集合【1】——— 从集合接口框架说起
之前大概分为三种,Set,List,Map三种,JDK5之后,增加Queue.主要由Collection和Map两个接口衍生出来,同时Collection接口继承Iterable接口,所以我们也可以说java里面的集合类主要是由Iterable和Map两个接口以及他们的子接口或者其实现类组成。我们可以认为Collection接口定义了单列集合的规范,每次只能存储一个元素,而Map接口定义了双列集合的规范,每次能存储一对元素。
秦怀杂货店
2020/11/08
8830
java集合【1】——— 从集合接口框架说起
JDK源码分析-Collection
Java 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。
WriteOnRead
2019/08/16
5750
JDK源码分析-Collection
Java 基础(三)——集合源码解析 Collection
前面我们讲到了集合的定义以及集合的 Iterator。我们知道集合分为 Collection和 Map,今天我们的重点是学习 Collection。
蜻蜓队长
2018/08/03
3150
Java 基础(三)——集合源码解析 Collection
Java集合类
集合类其实就是为了更好地组织、管理和操作我们的数据而存在的,包括列表、集合、队列、映射等数据结构。
用户9645905
2023/10/23
4370
Java集合类
实用技术:Java1.8工作中最常用的14个Stream详细小示例
java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样就可以将多个操作依次串起来。Stream 的创建需要指定一个数据源,比如 java.util.Collection的子类,List或者Set, Map不支持。Stream的操作可以串行stream()执行或者并行parallelStream()执行。
哲洛不闹
2020/06/10
6010
java.util.Collection[源码解读(下)]
上篇文章介绍了Collection接口的用途,本篇文章来介绍Collection接口的方法。
小诸葛
2020/04/14
5750
跟我学 Java 8 新特性之 Stream 流(二)关键知识点
我们的第一篇文章,主要是通过一个Demo,让大家体验了一下使用流API的那种酣畅淋漓的感觉。如果你没有实践,我还是再次呼吁你动手敲一敲,自己实实在跑一遍上一篇的Demo。
Java技术栈
2018/07/31
5740
跟我学 Java 8 新特性之 Stream 流(二)关键知识点
Java 集合深入理解(3):Collection
本文介绍了Java集合框架,包括Collection、Map、Iterator、迭代器、递归、并发和并行编程等相关内容。通过这些介绍,读者可以更好地理解Java集合框架及其在实际编程中的应用。
张拭心 shixinzhang
2018/01/05
1.3K0
Java 集合深入理解(3):Collection
java集合框架源码解析_java源代码怎么用
我们知道,java 中容器分为 Map 集合和 Collection 集合,其中 Collection 中的又分为 Queue,List,Set 三大子接口。
全栈程序员站长
2022/09/23
1.5K0
java集合框架源码解析_java源代码怎么用
Java 集合(3)-- Iterable接口源码级别详解
iterable接口其实是java集合大家庭的最顶级的接口之一了,实现这个接口,可以视为拥有了获取迭代器的能力。Iterable接口出现在JDK1.5,那个时候只有iterator()方法,主要是定义了迭代集合内元素的规范。
秦怀杂货店
2020/11/19
4100
Java 集合(3)-- Iterable接口源码级别详解
Java 8 Stream简介和“复用”的问题
最近工作后开始使用Stream,用起来比较顺手,可以说已经“沉浸于Stream无法自拔”,很少再用foreach循环了。
明明如月学长
2021/08/27
1.2K0
相关推荐
Java基础系列(三十九):集合之Collection
更多 >
LV.0
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档