java基础 - 01 java集合框架概述以及Iterable接口和Collection简单介绍

最近在开发过程中,发现自己对java集合的了解已经忘得差不多了,作为开发者,这可不是一件好事哈,之前开始学习java基础的时候,学过一段时间的java集合,但是现在到了工作岗位上的时候,发现自己用到的集合仅有少部分,主要使用到List和Map,.其他的用到少,可能是我项目组用的少吧,或者说我们目前居多均用List和Map就可以解决了。

废话说多了,正式来说集合篇吧:

java常见集合框架简介

我们将java集合框架称为容器,在java中,我们使用两个基本接口: Collection(List、Set、Queue等均继承自他)和 Map<K,V>。

List:有序、可重复的集合,常用的实现类有ArrayList和LinkedList。

Set:无序、不可重复的集合,常用的实现类有HashSet和TreeSet。

Map:键值对的集合,常用的实现类有HashMap和TreeMap。

Queue:队列,常用的实现类有LinkedList和PriorityQueue。

Stack:栈,常用的实现类有Stack。

Deque:双端队列,常用的实现类有ArrayDeque和LinkedList。

Iterable

作为Collection接口的顶级接口,可以用于迭代,用我们的API解释意思:作为实现这个接口运行对象成为foreach语句的目标。

Iterable<T>接口定义了一个抽象方法iterator(),该方法返回一个Iterator<T>对象,用于遍历集合中的元素。

Iterator<T>接口是Iterable接口的子接口,它定义了一些方法用于遍历集合中的元素,包括hasNext()、next()和remove()等。

通过实现Iterable<T>接口,我们可以使用增强型的for-each循环来遍历集合中的元素,而不需要直接操作Iterator对象。

以下是一个示例代码,展示了如何使用Iterable<T>接口和Iterator<T>接口来遍历集合中的元素:

在这里插入图片描述
在这里插入图片描述

public class MyCollection<T> implements Iterable<T> {
    private T[] elements;
    private int size;

    public MyCollection(T[] elements) {
        this.elements = elements;
        this.size = elements.length;
    }

    @Override
    public Iterator<T> iterator() {
        return new MyIterator();
    }

    private class MyIterator implements Iterator<T> {
        private int index;

        @Override
        public boolean hasNext() {
            return index < size;
        }

        @Override
        public T next() {
            return elements[index++];
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }
    }

    public static void main(String[] args) {
        Integer[] numbers = {1, 2, 3, 4, 5};
        MyCollection<Integer> collection = new MyCollection<>(numbers);

        for (Integer number : collection) {
            System.out.println(number);
        }
    }
}

上述代码中,MyCollection类实现了Iterable<T>接口,并提供了一个内部类MyIterator实现了Iterator<T>接口。通过实现这两个接口,我们可以使用增强型的for-each循环来遍历MyCollection对象中的元素。

需要注意的是,实现Iterable<T>接口的类必须提供一个返回Iterator<T>对象的iterator()方法,并且该方法不能返回null。

Collection

Collection接口是Java集合框架中的一个顶层接口,它表示一组对象的集合。Collection接口继承自Iterable接口,因此它可以被迭代(遍历)。

Collection接口定义了一系列操作集合的方法,包括添加、删除、查询、遍历等。常用的方法包括:

boolean add(E element): 将指定的元素添加到集合中。
boolean remove(Object element) 从集合中移除指定的元素。
boolean contains(Object element): 判断集合中是否包含指定的元素。
int size(): 返回集合中元素的个数。
boolean isEmpty(): 判断集合是否为空。
void clear() 清空集合中的所有元素。
Iterator<E> iterator(): 返回一个迭代器,用于遍历集合中的元素。

Collection<E>接口是其他集合类的基础,常见的实现类包括List、Set和Queue等。这些实现类提供了不同的数据结构和特性,以满足不同的需求。

例如,

  1. ArrayList和LinkedList是List接口的实现类,它们提供了有序、可重复的集合
  2. HashSet和TreeSet是Set接口的实现类,它们提供了无序、不可重复的集合
  3. LinkedList和PriorityQueue是Queue接口的实现类,它们提供了队列的功能。

通过使用Collection<E>接口,我们可以以统一的方式操作不同类型的集合,使得代码更加灵活和可扩展。

public class CollectionExample {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();

        // 添加元素
        collection.add("apple");
        collection.add("banana");
        collection.add("orange");

        // 判断集合是否为空
        System.out.println("Is collection empty? " + collection.isEmpty());

        // 获取集合的大小
        System.out.println("Collection size: " + collection.size());

        // 遍历集合
        Iterator<String> iterator = collection.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }

        // 判断集合中是否包含指定元素
        System.out.println("Does collection contain 'apple'? " + collection.contains("apple"));

        // 移除指定元素
        collection.remove("banana");

        // 清空集合
        collection.clear();

        // 判断集合是否为空
        System.out.println("Is collection empty? " + collection.isEmpty());
    }
}

Collection接口的相关方法:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/305229.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S部署GitLab

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【数据结构】二叉树链式结构详解

目录 1.前言2.快速创建一颗二叉树3.二叉树的遍历3.1前序遍历3.2中序遍历3.3后序遍历3.4层序遍历 4.二叉树节点个数与高度4.1二叉树节点个数4.2二叉树叶子节点个数4.3二叉树高度4.4二叉树第k层节点个数4.5二叉树查找值为x的节点 5.二叉树的基础oj题练习6.二叉树的创建和销毁6.1通…

【⭐AI工具⭐】AI工具导航推荐

目录 零 工具导航&#x1f449;【[AI工具集导航](https://ai-bot.cn/)】&#x1f448;&#x1f449;【[iForAI](https://iforai.com/)】&#x1f448;&#x1f449;【[AInav](https://www.ainav.cn/)】&#x1f448;&#x1f449;【[Navi AI 导航](https://www.naviai.cn/)】&a…

PhpPythonC++圆类的实现(OOP)

哎......被投诉了 &#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d; 其实也不是小编不更&#xff0c;这不是期末了吗&#xff08;zhaojiekou~~&#xff09;&#xff0c;而且最近学的信息收集和ctf感觉好像没找到啥能更的&#xff08;不过最经还是在考虑更一…

Flink CDC使用

Flink 环境准备 Flink 版本对应的CDC版本 两个jar包上传到flink bin目录下 flink-sql-connector-mysql-cdc mysql-connector-java 重启Flink集群

体系结构汇总复习(练习题)

1.MSI cache一致性协议问题 题解引用自&#xff1a;MSI cache一致性协议_假设在一个双cpu多处理器系统中,两个cpu用单总线连接,并且采用监听一致性协议(msi-CSDN博客 答&#xff1a; 事件A状态B状态初始状态IICPU A读SICPU A写MICPU B写IMCPU A读SS 接下来分析CPU A/B中各自c…

【Verilog】运算符

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 系列文章算术运算符关系运算符相等关系运算符逻辑运算符按位运算符归约运算符移位运算符条件运算符连接和复制运算符 算术运算符 …

React 入门 - 05(响应式与事件绑定)

本章内容 目录 一、响应式设计思想二、React 中的事件绑定 继上一节我们简单实现一个 TodoList来更加了解编写组件的一些细节。本节继续这个案例功能的完成。 一、响应式设计思想 1、在原生的 JS中&#xff0c;如果要实现点击”提交“按钮就将输入框的内容添加至页面列表中&…

【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍

前言&#xff1a; 在之前的项目中&#xff0c;我们已经使用 OpenVINO TM CSharp API 部署 PaddleOCR 全系列模型&#xff0c;但随着PaddleOCRv4版本发布以及OpenVINO CSharp API版本迭代&#xff0c;上一版本的项目已经不再适用。因此在推出的最新项目中&#xff0c;已经完成了…

6款实用的Git可视化管理工具

前言 俗话说得好“工欲善其事&#xff0c;必先利其器”&#xff0c;合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。我们在团队开发中统一某个开发工具能够降低沟通成本&#xff0c;提高协作效率。今天给大家分享6款实用的Git可视化管理工具。 Git是什么&…

QT基础篇(1)QT概述

1.什么是QT QT是一个跨平台的C应用程序开发框架。它提供了一套丰富的图形用户界面&#xff08;GUI&#xff09;和多媒体功能&#xff0c;可以用于开发各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入式系统。QT具有易于使用、可定制性强、性能高等特点&a…

DelayQueue原理探究

DelayQueue并发队列是一个无界阻塞延迟队列&#xff0c;队列中的每个元素都有个过期时间&#xff0c;当从队列获取元素时&#xff0c;只有过期元素才会出队列。队列头元素是最快要过期的元素。 DelayQueue类图结构 由该图可知&#xff0c;DelayQueue内部使用PriorityQueue存放…

doris部署

doris-2.0.1.1部署安装 一、下载doris安装包二、解压到/data下&#xff0c;修改名称三、修改fe配置文件四、启动doris-fe五、验证doris-fe六、修改be配置文件七、启动doris-be八、mysql中连接be&#xff0c;在Doris中添加后端节点九、设置密码 一、下载doris安装包 wget https…

腾讯云优惠券是什么?2024年如何领取优惠券?

腾讯云优惠券是腾讯云平台提供的一种优惠方式&#xff0c;用户可以通过领取并使用优惠券&#xff0c;享受一定的折扣优惠。这些优惠券适用于腾讯云的各类产品&#xff0c;包括云服务器、数据库、CDN等&#xff0c;帮助用户降低购买成本&#xff0c;提高使用体验。 在2024年&…

软件测试|Django 入门:构建Python Web应用的全面指南

引言 Django 是一个强大的Python Web框架&#xff0c;它以快速开发和高度可扩展性而闻名。本文将带您深入了解Django的基本概念和核心功能&#xff0c;帮助您从零开始构建一个简单的Web应用。 什么是Django&#xff1f; Django 是一个基于MVC&#xff08;模型-视图-控制器&a…

11.11上课笔记

1.字符串 1.字符串是基本数据类型&#xff1a; "字符串" 字符串字符串str(字符串) #创建或者转换其他类型的字符串 a.获取长度&#xff1a;len&#xff08;字符串&#xff09; b.字符串是一个有序的数列&#xff08;sequence&#xff09;&#xff0c;也是一个可迭…

Edge浏览器停止更新方法之一(一分钟版)

一分钟时间停止器 开整原理效果步骤 结尾 开整 原理 通过限制window管理员的权限&#xff0c;禁止了更新程序的写入和读取&#xff0c;自然就更新不了了 效果 步骤 对着Edge浏览器图标右键&#xff0c;点击“打开文件所在位置” 到这级目录&#xff0c;然后往回退两级找到…

二进制部署

HOST HostnameIP地址flannedAPPmaster192.169.116.10ETCD\APIserver\Scheduler\Controller-Managernode1192.168.116.11172.17.28.0ETCD,Flanned,Kubelet,kube-proxynode2192.168.116.12172.17.26.0ETCD,Flanned,Kubelet,kube-proxy Kubernetes社区 Kubernetes文档 ETCD mas…

最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书

前提&#xff1a;朋友弄了一个培训机构&#xff0c;培训考试合格后&#xff0c;给发证书&#xff0c;需要一个证书查询系统。委托我给弄一个&#xff0c;花了几个晚上给写的证书查询系统。 实现功能&#xff1a; 前端按照姓名手机号码进行证书查询证书信息展示证书展示&#x…

云仓酒庄的品牌雷盛红酒LEESON分享什么是“小农香槟”?

云仓酒庄的品牌雷盛红酒LEESON分享说起香槟&#xff0c;第一时间会想到法国&#xff0c;因为只有法国的起泡酒才能叫“香槟”。那么&#xff0c;什么又是“小农香槟”呢&#xff1f; 小农香槟是相对大厂香槟而命名的&#xff0c;是指葡萄果农自产、自酿、自销的香槟&#xff0…