当前位置: 首页 > news >正文

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.lryc.cn/news/623623.html

相关文章:

  • 《PEFLL: Personalized Federated Learning by Learning to Learn》——论文阅读
  • 【Android】Activity创建、显式和隐式跳转、清单文件声明
  • Android 对话框 - 基础对话框补充(不同的上下文创建 AlertDialog、AlertDialog 的三个按钮)
  • 飞算JavaAI结合Redis实现高性能存储:从数据瓶颈到极速读写的实战之旅
  • 关于虾的智能养殖系统的开发与实现(LW+源码+讲解+部署)
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • 三维重建-动手学计算机视觉19(完结)
  • SHAP分析!NRBO-Transformer-BiLSTM回归预测SHAP分析,深度学习可解释分析!
  • ReID/OSNet 算法模型量化转换实践
  • 牛客周赛 Round 105
  • Redis-plus-plus API使用指南:通用操作与数据类型接口介绍
  • EDMA(增强型直接内存访问)技术
  • [每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析
  • 多线程—飞机大战(加入排行榜功能版本)
  • 亚马逊拉美市场爆发:跨境卖家的本土化增长方程式
  • UE5多人MOBA+GAS 48、制作闪现技能
  • 第四章:大模型(LLM)】06.langchain原理-(7)LangChain 输出解析器(Output Parser)
  • CSS中linear-gradient 的用法
  • 【Python】Python 面向对象编程详解​
  • 多线程—飞机大战(加入播放音乐功能版本)
  • macos 安装nodepad++ (教程+安装包+报错后的解决方法)
  • Sentinel和12.5米高程的QGIS 3D效果
  • scikit-learn/sklearn学习|套索回归Lasso解读
  • scikit-learn RandomizedSearchCV 使用方法详解
  • scikit-learn 中的均方误差 (MSE) 和 R² 评分指标
  • .NET 中的延迟初始化:Lazy<T> 与LazyInitializer
  • 『搞笑名称生成器』c++小游戏
  • Spring Cloud整合Eureka、ZooKeeper、原理分析
  • 云计算-k8s实战指南:从 ServiceMesh 服务网格、流量管理、limitrange管理、亲和性、环境变量到RBAC管理全流程
  • 【Kubernetes系列】Kubernetes中的resources