java常用集合方法

news/2024/9/16 15:26:51/ 标签: java, 开发语言, 后端, 集合, java基础

目录

    • 一、Iterator接口
    • 二、Iterable接口
    • 三、Collection接口
    • 四、Collection与Iterable关系

一、Iterator接口

Iterator 是一个集合迭代器接口,它提供了以下方法:

  1. 判断迭代器中是否还拥有元素,有则返回true,否则返回false

    boolean hasNext();

  2. 获取迭代器中的下一个元素

    E next();

  3. 移除集合中的元素
    default void remove() { throw new UnsupportedOperationException("remove"); }

  4. 对迭代器中剩余的元素进行操作(从 jdk 8 开始)

    default void forEachRemaining(Consumer<? super E> action) {
         Objects.requireNonNull(action);
         while (hasNext())
        action.accept(next());
    }

二、Iterable接口

Iterable是一个迭代接口

java">public interface Iterable<T> {/*** Returns an iterator over elements of type {@code T}.** @return an Iterator.*/Iterator<T> iterator();/*** Performs the given action for each element of the {@code Iterable}* until all elements have been processed or the action throws an* exception.  Unless otherwise specified by the implementing class,* actions are performed in the order of iteration (if an iteration order* is specified).  Exceptions thrown by the action are relayed to the* caller.** @implSpec* <p>The default implementation behaves as if:* <pre>{@code*     for (T t : this)*         action.accept(t);* }</pre>** @param action The action to be performed for each element* @throws NullPointerException if the specified action is null* @since 1.8*/default void forEach(Consumer<? super T> action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}}/*** Creates a {@link Spliterator} over the elements described by this* {@code Iterable}.** @implSpec* The default implementation creates an* <em><a href="Spliterator.html#binding">early-binding</a></em>* spliterator from the iterable's {@code Iterator}.  The spliterator* inherits the <em>fail-fast</em> properties of the iterable's iterator.** @implNote* The default implementation should usually be overridden.  The* spliterator returned by the default implementation has poor splitting* capabilities, is unsized, and does not report any spliterator* characteristics. Implementing classes can nearly always provide a* better implementation.** @return a {@code Spliterator} over the elements described by this* {@code Iterable}.* @since 1.8*/default Spliterator<T> spliterator() {return Spliterators.spliteratorUnknownSize(iterator(), 0);}
}

从上面的源码可以看出,Iterable是一个接口,它提供了 以下三个方法:

  1. 返回一个可迭代对象

    Iterator<T> iterator();

  2. forEach 遍历(从jdk8开始)

    default void forEach(Consumer<? super T> action) {
         Objects.requireNonNull(action);
              for (T t : this) {
                   action.accept(t);
              }
    }

  3. 返回一个用于遍历集合的 Spliterator。这个方法是Java 8引入的,它允许集合实现者提供一个高效的遍历器,而不需要像以前那样实现 Iterator 接口。

    default Spliterator<T> spliterator() {
         return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }

    这里,Spliterators.spliterator 是一个静态方法,它接受一个集合和一个特征集合作为参数。特征集合是一个位掩码,用于指定 Spliterator 的特性,比如是否有序、是否并行等。在默认实现中,特征集合是 0,表示没有任何特性。

    如果你正在实现自己的集合类,并且想要提供一个更高效的 Spliterator,你可以覆盖这个方法,并提供你自己的实现。

三、Collection接口

Collection是一个集合接口,除了默认实现方法外,定义了集合操作的常用方法,如:

  1. 集合元素数量

    int size();

  2. 判断集合是否为空

    boolean isEmpty();

  3. 判断集合是否包含某个元素

    boolean contains(Object o);

  4. 返回一个迭代器

    Iterator<E> iterator();

  5. 返回包含此集合中所有元素的数组

    Object[] toArray();

  6. 添加元素

    boolean add(E e);

  7. 移除元素

    boolean remove(Object o);

  8. 判断集合是否包含指定集合中的所有元素

    boolean containsAll(Collection<?> c);

  9. 添加指定集合的所有元素

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

  10. 移除指定集合的所有元素

    boolean removeAll(Collection<?> c);

  11. 删除此集合中满足给定条件的所有元素(jdk8开始支持)

    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;
    }

  12. 仅保留此集合中包含在指定集合中的元素(可选操作)。换句话说,从此集合中删除未包含在指定集合中的所有元素。

    boolean retainAll(Collection<?> c);

  13. 从此集合中删除所有元素。此方法返回后,集合将为空。

    void clear();

  14. 返回一个用于遍历集合的 Spliterator(从jdk8开始支持)

    @Override
    default Spliterator<E> spliterator() {
         return Spliterators.spliterator(this, 0);
    }

  15. 返回一个Stream流(从jdk8开始支持)

    default Stream<E> stream() {
    return StreamSupport.stream(spliterator(), false);
    }

四、Collection与Iterable关系

    
Collection接口继承了Iterable接口,复用了Iterable中的相关方法。
public interface Collection<E> extends Iterable<E> {

在这里插入图片描述


http://www.ppmy.cn/news/1522716.html

相关文章

CTK框架(四): 插件编写

目录 1.生成插件 1.1.环境说明 1.2.服务类&#xff0c;纯虚类&#xff0c;提供接口 1.3.实现插件类&#xff0c;实现纯虚函数 1.4.激活插件&#xff0c;加入ctk框架的生命周期中 1.5.添加资源文件 1.6..pro文件 2.使用此插件 3.总结 1.生成插件 1.1.环境说明 编译ct…

ArcGIS Pro SDK (十二)布局 9 布局元数据与图框

ArcGIS Pro SDK (十二)布局 9 布局元数据与图框 文章目录 ArcGIS Pro SDK (十二)布局 9 布局元数据与图框1 布局元数据1.1 布局元数据2 布局地图框2.1 更改与地图框关联的地图2.2 更改地图框照相机设置2.3 将地图框缩放到单个图层的范围2.4 将地图框范围更改为多个图层中的…

iOS——Block与内存管理

需要内存管理的情况 1、对象类型的auto变量。 2、引用了 __block 修饰符的变量。 三种block类型 全局类型 &#xff08;NSGlobalBlock&#xff09; 如果一个block里面没有访问普通局部变量(也就是说block里面没有访问任何外部变量或者访问的是静态局部变量或者访问的是全局…

初识Linux · 有关gdb

目录 前言&#xff1a; 1 预备知识 2 gdb的使用 前言&#xff1a; 当我们Linux学到了这里的时候&#xff0c;我们大概会有一种感觉是&#xff0c;从VS2022转战Linux&#xff0c;写代码对我们来说是一种重新构建读写代码的一个过程&#xff0c;从文本编辑器&#xff0c;到文…

P1781 宇宙总统

[题目通道](宇宙总统 - 洛谷) #include<bits/stdc.h> using namespace std; int main() {int n,QQ; string w"";string q;cin>>n;for (int i1;i<n;i) {cin>>q;int z q.size();int x w.size();if (z>x||(z>x&&q> w)) {wq;QQ…

Vite + Vue3 +Vant4出现Toast is not a function

今天写前端的时候出现了这个问题搞了我一会 搜集原因: 1:是vant版本的问题&#xff0c;Toast()的方法是vant3版本的写法&#xff0c;而我用的是vant4&#xff0c;vant4中的写法改成了showToast()方法&#xff0c;改正过来 import {showToast} from "vant"; 发现还是…

本地部署AI大模型

mac windows 同理 用到的软件 docker ollama 大家可以到官网下载 在ollama官网选择models&#xff0c;这里面有用到的大模型 我用到的是 qwen2 &#xff0c;这个对中文比较友好 注意&#xff0c;每个模型有不同的参数版本&#xff0c;参数量越大&#xff0c;对电脑配置越高&…

flutter文本输入框使用

在Flutter中&#xff0c;实现输入框一般使用TextField&#xff0c;通过设置它的属性给输入框和内部文字设置不同的样式。 Flutter 输入框实现简单例子 import package:flutter/material.dart;class MyEditPage extends StatelessWidget {const MyEditPage({super.key});overr…

与MySQL邂逅

MySQL安装捏~ 其实每次新学一样东西&#xff0c;安装永远是一个小坎 但是小问题啦 安装MySQL要用root账户&#xff0c;安装后普通用户也可以用捏 要安装MySQL先来看第一步&#xff01; 改bug&#xff01; Centos 卸载不要的环境 先康康有木有捏&#xff1a; mariadb就是…

不小心删除了 Android 手机上的短信?3 步流程恢复误删除的短信以及图片、视频、联系人

不小心删除了 Android 手机上的短信&#xff1f;别担心&#xff0c;Android 版奇客数据恢复工具可以帮助您通过简单的 3 步流程恢复已删除的短信以及图片、视频、联系人等。 如何在 Android 上恢复已删除的短信 不小心删除了 Android 手机上的短信&#xff1f;Android 版奇客数…

Django缓存

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django 5框…

Web3社交新经济,与 SOEX 实现无缝交易的高级安全性

出于充分的理由&#xff0c;安全性是交易中至关重要的考虑因素。每个人都应该确保自己的资金在交易时是安全的。由于 &#xff33;&#xff2f;&#xff25;&#xff38; 充当您与交易所的最佳连接&#xff0c;因此必须强调的是&#xff0c;该系统不会引发任何安全问题。 &a…

C语言程序设计(算法的概念及其表示)

一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤…

帮招一名海康VM机器视觉工程师,工作地:苏州园区,行业:智能仓储自动化巨头,VM可以二次独立开发,岁数35岁以下,薪资18K+

工作职责&#xff1a; 能完成视觉系统的评估&#xff0c;合理的选择硬件配置&#xff0c;快速的完成软件功能开发和调试&#xff0c;并跟踪设备运转状况&#xff0c;保证设备稳定运行 能够清晰的理解客户某个站点的工艺需求&#xff0c;准确定位项目需求&#xff1b;能够根据需…

网络学习-eNSP配置VRRP

虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP) VRRP广泛应用在边缘网络中&#xff0c;是一种路由冗余协议&#xff0c;它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱&#xff0c;允许主机使用单路由器&#xff0c;以及即使在实际…

HTTP 一、基础知识

一、概述 1、概述 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全称超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。HTTP 是一种应用层协议&#xff0c;是基于 …

微知-BIOS中的XHCI模式是什么意思?(usb3.0的扩展控制器影响usb3.0速率等选项)

XHCI “eXtensible Host Controller Interface” “可扩展主机控制器接口”。 英特尔公司开发的一个USB主机控制器接口&#xff0c;主要面向USB 3.0&#xff0c;同时也支持USB 2.0及以下版本的设备。 是usb3.0的核心部分。 有他表示主机支持usb3.0 三种模式&#xff1a;Smart …

效率神器Listary,附激活码

相信很多人都在用Everything&#xff0c;但是我更钟情于Listary&#xff0c;双击Ctrl即可实现软件调用&#xff0c;支持命令、文件搜索、网络搜索&#xff0c;妥妥的增效神器&#xff0c; 软件使用 文件查找时&#xff0c;双击Ctrl调用搜索框后再双击Ctrl&#xff0c;可以打开…

全国大学生数学建模竞赛全国奖项评阅工作规范(2023年修订稿)

为了适应新的形势,更好地促进全国大学生数学建模竞赛活动的健康发展,进一步提高全国奖项评阅工作的质量和公正、公平性,根据《全国大学生数学建模竞赛章程》和竞赛活动的现状,特制订本规范。 一、评阅组的组成 第一条 全国评阅专家组(以下简称评阅组)由全国大学生数学建…

达梦数据库管理员常用SQL(一)

达梦数据库管理员常用SQL(一) 数据库基本信息数据库参数信息表空间信息日志文件信息进程和线程信息会话连接信息SQL执行信息等待事件信息事务和锁信息数据库基本信息 --查询数据库内部版本号 select id_code; select build_version from v$instance; select * from v$versi…