Kotlin集合概述

  • Kotlin 的集合类同样由两个接口派生: CollectionMapCollectionMap 是 Java 集合框架的根接口,这两个接口又包含了 一些子接口或实现类
  • Kotlin 集合与 Java 集合不同, Java 集合都是可变集合一一开发者可以向集合中添加、删除、修改元素,但 Kotlin 的集合被分成两大类: 可变集合不可变集合。只有可变集合才能添加、删除、修改元素,不可变集合只能读取元素。

Collection集合

  • Kotlin 为 Collection 接口派生了一个子接口 , 即MutableCollection,该子接口又包含了两个子接口 :MutableSetMutableList, 这一分支就代表了 Kotlin 的可变集合。而由Collection 直接派生的SetList接口则代表了不可变集合
    Kotlin的设计思路:
  • 可变集合接口、可变集合类是不可变集合接口、不可变类的子接口或子类 。
  • 每个接口下都有一个抽象实现类 。
    Kotlin 的集合实现类比 Java 更少,它只提供了HashSetLinkedHashSet
    ArrayList 这三个最常见的实现类,如果需要使用TreeSetLinkedList集合实现类,则可以使用 Java 集合框架提供的类 。

注意:
Kotlin 在 JVM 平台上并未真正实现 HashSetLinkedHashSetArrayList 这些类,只是为 Java 的 HashSetLinkedHashSetArrayList 指定了一个类型别名而己,这样就直接借用了 Java 的这些集合类 。 此外, Kotlin 为这些集合类扩展了更多的方法,因
此用起来很方便。

Map集合

  • Kotlin 的 Map 派生了 MutableMap 接口,它代表了 一个可变的 Map集合。而实际上 Kotlin 只为 Map 提供了 HashMapLinkedHashMap 常用实现类。如果开发者需要使用 TreeMapEnurnMapWeakHashMap ,则依然可以使用 Java 集合框架所提供的类。

注意:
Kotlin 在JVM 平台上并未真正实现 HashMapLinkedHashMap ,只是为 Java
HashMapLinkedHashMap 指定了一个类型别名而己,这样就直接借用了 Java
的这些集合类。此外, Kotlin 为这些集合类扩展了更多的方法,因此用起来更方
便。

不难发现 Kotlin 只提供了 HashSetHashMapLinkedHashSetLinkedHashMapArrayList 这 5 个集合实现类,而且它们都是可变集合 。那么说好的不可变集
合呢? Kotlin 的不可变集合类并没有暴露出来,我们只能通过函数来创建不可变集合

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql核心框架知识

Mysql核心框架 本文旨在梳理和理解 MySQL 的一些核心知识点,并结合常见面试题进行思考和总结。这些内容主要来源于我的个人学习与理解。 1. 事务 概念 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback…

C# NX二次开发:字符串控件StringBlock讲解

大家好,今天介绍ug二次开发过程中的一个叫字符串的控件,这个控件在块UI编辑器中可以使用。 下面是这个控件中的一些属性和方法: 1、 protected internal StringBlock(); // // 摘要: // Returns or sets the WideValue.…

【datawhale组队学习】n8n TASK01

教程地址:https://github.com/datawhalechina/handy-n8n/ 文章目录n8n节点的类别local-pc-deployn8n n8n 意思是 nodemation,是 node 与 automation 的组合词,读作 n-eight-n。 n8n 是一个开源的、基于节点的自动化工具,官方站点…

海洋牧场项目融资新曙光:绿色金融赋能蓝色经济发展

在海洋经济蓬勃发展的时代浪潮中,海洋牧场作为新兴的海洋产业模式,承载着保障国家粮食安全、促进海洋生态保护与可持续利用的重要使命。然而,海洋牧场项目的建设是一项庞大而复杂的系统工程,从前期的基础设施搭建、种苗培育&#…

51c大模型~合集170

自己的原文哦~ https://blog.51cto.com/whaosoft/14132244 #4DNeX 一张图,开启四维时空:4DNeX让动态世界 「活」起来 仅凭一张照片,能否让行人继续行走、汽车继续飞驰、云朵继续流动,并让你从任意视角自由观赏&#…

深入剖析以太坊虚拟机(EVM):区块链世界的计算引擎

引言:EVM——区块链世界的"计算引擎" 以太坊虚拟机(Ethereum Virtual Machine,EVM)是以太坊网络的核心创新,它不仅仅是一个执行环境,更是整个区块链生态系统的"计算引擎"。作为智能合…

深入分析 Linux PCI Express 子系统

深入分析 Linux PCI Express 子系统 一、PCI Express 工作原理 PCIe 是一种高速串行点对点互连协议,采用分层架构: #mermaid-svg-rsh0SW87JPR0aUxA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…

MySQL 运算符详解:逻辑、位运算与正则表达式应用

MySQL 运算符详解:逻辑、位运算与正则表达式应用 在 MySQL 中,运算符是构建复杂查询条件的基础。除了基础的算术和比较运算符,逻辑运算符、位运算符以及正则表达式的灵活运用,能让数据筛选更加精准高效。本文将系统讲解这些运算符…

<数据集>遥感飞机识别数据集<目标检测>

数据集下载链接https://download.csdn.net/download/qq_53332949/91702190数据集格式:VOCYOLO格式 图片数量:3842张 标注数量(xml文件个数):3842 标注数量(txt文件个数):3842 标注类别数:20 标注类别名称&#xf…

Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南

目录Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南前言第一部分:安装前准备1.1 系统要求检查1.2 下载安装包1.3 验证安装包完整性第二部分:安装KingbaseES2.1 启动安装程序2.2 接受许可协议2.3 选择授权文件2.4 设置安装目录2.5 选择安装…

Git+Jenkins 基本使用

一、什么是 JenkinsJenkins 是一个功能强大的应用程序,允许持续集成和持续交付项目(持续部署),无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成 Jenkins 可以用于一些测试和部署技术…

Linux第十三讲:线程同步和互斥

Linux第十三讲:线程同步和互斥1.线程互斥1.1进程线程间的互斥背景概念1.2什么是锁1.2.1认识锁,理解锁2.线程同步2.1条件变量2.2生产和消费模型2.3基于阻塞队列(blockqueue)的生产消费模型2.3.1单生产,单消费的阻塞队列模拟实现2.3.2多生产&am…

SAP 简单的AMDP demo 练习使用

SAP AMDP(ABAP Managed Database Procedure)是SAP的一项先进技术,用于在SAP HANA数据库上执行高性能的数据库操作。它允许ABAP开发人员编写数据库过程,这些过程可以在数据库级别上执行,从而实现更快的数据处理和更高的…

Maven JAR Plugin 插件使用说明

Maven JAR Plugin 插件使用说明1 Maven JAR Plugin 插件地址2 Maven JAR Plugin 特点3 maven-assembly-plugin 的用法3.1 无依赖项 maven-jar-plugin 配置3.2 有依赖项 maven-jar-plugin 配置3.3 配合maven-dependency-plugin 将依赖复制到指定位置1 Maven JAR Plugin 插件地址…

QT+Yolov8 推理部署,ONNX模型 ,实例分割+目标检测

QTYolov8 实例分割、目标检测推理。QT源码。 程序准备/版本:QT creator QT6.8 编译器:MSVC2022 opencv:4.7 onnxruntime:1.16.0 cpu版本 QTyolo推理部署程序部分源码: #include "aitoolinterface.h" #include "ui_aitoolinterface.h" #include <QDebu…

【java实现一个接口多个实现类通用策略模式】

java实现同个接口多个实现类通用策略模式 项目业务中&#xff0c;有多个平台&#xff0c;多个平台直接有相同的业务&#xff0c;只有一个接口入口&#xff0c;但是 不同的平台入口&#xff0c;虽然接口相同&#xff0c;参数相同&#xff0c;但是各自的具体实现不同&#xff0c;…

leetcode-139. 单词拆分-C

暴力回溯回溯过程就是一个决策树模型&#xff0c;从所有选择中找到合适的继续&#xff0c;否则回到上一级继续。该方法思路简单&#xff0c;时间复杂度过高&#xff0c;大概1/4的用例超时。 bool backtrack(char *s, int cur, char** wordDict, int wordDictSize) {// 基线条件…

《彩色终端》诗解——ANSI 艺术解码(DeepSeek)

AIi诗解通吾灵&#xff0c;直抄原文享分玲。 笔记模板由python脚本于2025-08-18 23:35:59创建&#xff0c;本篇笔记适合喜欢诗&代码的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官网…

抓包工具tcpdump详细指南

目录 1. 核心功能与特性 2. 关键参数速查表 3. 基础命令 3.1 协议/端口过滤 3.2 IP 地址过滤 3.3 高级逻辑组合 3.4 控制输出详细度 3.5 解析包内容 3.6 特殊包过滤 3.7 限制抓包数量 3.8 过滤特定大小包 3.9 过滤提升性能 ​​​​​​3.10 多网卡绑定 3.11 高级…

三高架构杂谈

我们的秒杀请求到了tomcat之后&#xff0c;我整个请求到了后端&#xff0c;我们怎么抗住高并发 也就是让他1s抗住10w的订单量&#xff0c;该怎么做 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…