当前位置: 首页 > 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.dtcms.com/a/335613.html

相关文章:

  • 【LeetCode】13. 罗马数字转整数
  • 不止于“渲染图”:从Adobe Stager到Three.js的交互式Web3D工作流
  • 安卓开发者自学鸿蒙开发4自定义组件
  • C#中List、Path、字符串操作等常用方法总结
  • fdisk的格式化分区和挂载(linux)
  • Collections.synchronizedList是如何将List变为线程安全的
  • 解决 OpenWrt 编译时报 toolchain/* failed to build 的错误
  • RK3588开发板Ubuntu系统烧录
  • Matlab课程实践——基于MATLAB设计的计算器软件(简单、科学、电工、矩阵及贷款计算)
  • Leetcode 15 java
  • 如何打造自己的工作室,实现快速开发
  • linux中已经启用的命令和替代命令
  • 【AI智能体】Dify 搭建发票识别助手操作实战详解
  • Windows 10共享打印机操作指南
  • 阶段二:7-上网行为安全概述
  • NestJS 手动集成TypeORM
  • 天国:拯救2 黄金版 MOD整合 送修改器+画质增强工具 免安装中文版
  • PyCharm与前沿技术集成指南:AI开发、云原生与大数据实战
  • EDMA(增强型直接内存访问)技术
  • 【LeetCode 热题 100】118. 杨辉三角
  • 大模型落地:从理论到实践的完整路径
  • RK3568平台开发系列讲解:PCIE trainning失败怎么办
  • 算法复杂度深度解析:时间与空间的权衡艺术
  • 编程算法实例-Armstrong数(阿姆斯特朗数)
  • TDengine IDMP 运维指南(1. 部署规划)
  • ThinkPHP8学习篇(三):控制器
  • 网络常识-SSE对比Websocket
  • 《Python学习之文件操作:从入门到精通》
  • 新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
  • 李宏毅NLP-11-语音合成