首页 > 编程语言 >Java中的集合

Java中的集合

时间:2024-08-19 21:24:00浏览次数:12  
标签:遍历 Java 构造方法 接口 Collection 集合 数据结构 Iterable

Java中的集合

在这里插入图片描述

  1. Collection是一个顶层接口,它主要用来定义集合的约定。
  2. List接口也是一个顶层接口,它继承了Collection接口,同时也是ArrayList、LinkedList等集合元素
    的父类。
  3. Set接口位于与List接口同级的层次上,它同时也继承了Collection接口。Set接口提供了额外的规
    定。它对add、equals、hashCode方法提供了额外的标准。
  4. Queue是和List、Set接口并列的Collection的三大接口之一。Queue的设计用来在处理之前保持元
    素的访问次序。除了Collection基础的操作之外,队列提供了额外的插入,读取,检查操作。
  5. SortedSet接口直接继承于Set接口,使用Comparable对元素进行自然排序或者使用Comparator在
    创建时对元素提供定制的排序规则。set的迭代器将按升序元元素顺序遍历集合。
  6. Map是一个支持key-value存储的对象,Map不能包含重复的key,每个键最多映射一个值。这个接
    口代替了Dictionary类,Dictionary是一个抽象类而不是接口。

一、Iterable

1.1、Iterable简介

Iterable接口是Java集合框架的顶级接口,它为对象提供了一种统一的方式来进行迭代遍历。
Iterable接口的定义非常简单,但功能强大。该接口要求实现一个方法:iterator(),该方法返回一个实现了Iterator接口的迭代器对象。通过这个迭代器,可以依次访问容器中的元素。具体来说,Iterable接口包括以下几个方法:

  1. iterator(): 必须实现的方法,用于返回一个Iterator对象,该对象用于遍历容器中的元素。
  2. forEach(Consumer<? super T> action): Java 8引入的默认方法,用于对Iterable中的每个元素执行给定的操作。
  3. spliterator(): Java 8引入的默认方法,用于创建一个Spliterator对象,该对象可以用于并行遍历元素,以适应多核处理器。
    在实际应用中,Iterable接口的使用场景非常广泛,尤其是在需要遍历一个集合或数组时。例如,Java中的所有的Collection类(如List、Set)都实现了Iterable接口,这使得它们可以使用foreach循环直接遍历。

1.2、Iterable功能

它的主要作用是为各种数据结构提供统一的遍历方式。实现此接口的类可以使用增强的for循环(foreach循环)进行遍历。

1.3、使用场景

  1. 当你希望在多种数据结构上使用相同的遍历逻辑时。
  2. 当你想使用Java的增强for循环来遍历某个集合。

1.4、实现Iterable接口

要实现Iterable接口,你需要提供一个返回Iterator对象的iterator()方法。通常与Collection或Map等接口一起使用。
以下是一个简单的示例,展示如何创建一个实现了Iterable接口的简单类,并使用增强for循环进行遍历:

import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;

public class SimpleIterable<T> implements Iterable<T> {
   
    private List<T> data = new ArrayList<>();

    public void add(T item) {
   
        data.add(item);
    }

    @Override
    public Iterator<T> iterator() {
   
        return data.iterator();
    }

    public static void main(String[] args) {
   
        SimpleIterable<String> iterable = new SimpleIterable<>();
        iterable.add("A");
        iterable.add("B");
        iterable.add("C");

        for (String item : iterable) {
   
            System.out.println(item);
        }
    }

标签:遍历,Java,构造方法,接口,Collection,集合,数据结构,Iterable
From: https://blog.csdn.net/miaoyl1234/article/details/141334124

相关文章

  • JAVA基础:File类
    目录前言file对象的创建file的常用方法前言file类表示的是系统中的一个文件或者文件夹file类和系统中的文件或者文件夹不需要是一一对应的,我们可以在file类中写你系统中不存在的文件或文件夹file类中存储的实际上是文件或文件夹的抽象路径,这些路径可以是绝对路径也可......
  • javase—day07
    aObjectStream_ObjectInPutStreamDemo02packagecom.se.aObjectStream;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.ObjectInputStream;/***反序列化的类型:*ObjectInputStream(InputStreami......
  • 【实战指南】使用 Redis 实现 Java 项目中的防重复提交功能:从原理到实战(实战篇)
    文章目录使用Redis实现Java项目中的防重复提交功能1.引言1.1为何需要防重复提交功能1.2重复提交导致的问题1.3引入Redis作为解决方案的一部分2.基础知识2.1Redis简介2.2Java环境搭建2.3环境配置3.理论基础3.1HTTP请求的特点3.2前端表单提交3.3后......
  • SpringBoot依赖之Spring Data Redis一有序集合Sorted Set
    概念SpringDataRedis(Access+Driver)依赖名称:SpringDataRedis(Access+Driver)功能描述:Advancedandthread-safeJavaRedisclientforsynchronous,asynchronous,andreactiveusage.SupportsCluster,Sentinel,Pipelining,Auto-Reconnect,Codecsand......
  • Java基础——HttpStatus.class 源码中状态码总结
    HttpStatus.class源码中状态码总结HttpStatus.class源码////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packageorg.springframework.http;importorg.springframework.lang.Nullable;publicenumH......
  • JAVA基础之-参数传递
    准备整理一个系列,这是系列的第一篇。这是一个经典的问题,也是JAVA程序员所必须掌握的。一、小结论和例子1.1结论内容没有多少,可以先说结论:变量的表示和参数传递变量是如何表示,尤其是参数是如何表示的 存储则具体看变量是什么类型:类静态、实例变量、方法变量表示-基本类......
  • SpringBoot依赖之Spring Data Redis一集合Set
    概念SpringDataRedis(Access+Driver)依赖名称:SpringDataRedis(Access+Driver)功能描述:Advancedandthread-safeJavaRedisclientforsynchronous,asynchronous,andreactiveusage.SupportsCluster,Sentinel,Pipelining,Auto-Reconnect,Codecsand......
  • Docker部署Java项目
    本文使用Dockerfile的形式进行Java项目的部署第一步:创建Dockerfile文件Dockerfile是用于创建Docker对象的脚本,先创建Dockerfile文件,以下为我的文件模版: FROM:java对应的jdk版本RUN: 在构建过程中执行命令,用于安装软件、配置环境等ENV:设置环境变量WORKDIR:指向构建镜像时使......
  • java基础private/封装篇
    private的使用private设置后想要更改变量只能在此类中更改若想在其他类中更改和使用需要用get/set方法get获取变量值set更改变量值需自定义方法可加判断构造方法的概述构造方法是一种特殊的方法作用:创建对象格式:publicclass类名{......
  • JavaScript-正则表达式入门指南-全-
    JavaScript正则表达式入门指南(全)原文:IntroducingRegularExpressions协议:CCBY-NC-SA4.0一、正则表达式简介为了开始介绍正则表达式,我将从一个例子开始。这是一个你已经经历了几百次的问题。当您在线输入客户数据时,许多web表单会要求您提供电子邮件地址。为了避免输入......