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

【Kotlin】List、Set、Map简介

1 List

        Java 的 List、Set、Map 介绍见 → Java容器及其常用方法汇总。

1.1 创建 List

1.1.1 emptyList

var list = emptyList<String>() // 创建空List

1.1.2 List 构造函数

var list1 = List(3) { "abc" } // [abc, abc, abc]
var list2 = ArrayList<Int>()
var list3 = LinkedList<String>()

1.1.3 listOf

var list1: List<String> = listOf() // 只读List
var list2: MutableList<String> = mutableListOf() // ArrayList
var list3: List<String> = listOf("zhang", "li", "wang")
var list4: MutableList<String> = mutableListOf("zhang", "li", "wang")
var list5 = listOfNotNull(true, 5, 3f, "abc", null)

        说明:listof 和 listOfNotNull 生成的列表是只读列表,不能修改。

1.1.4 根据 Array 创建 List

var arr = arrayOf(1, 2, 3)
var list1 = listOf(arr)
var list2 = listOfNotNull(arr)

1.2 增删改查

1.2.1 增加元素

fun main() {var list = mutableListOf<String>()list.add("abc")list.add("xyz")list.add(1, "ABC")list += "XYZ"list += arrayOf("123")list += listOf("456")list += setOf("789")
}

1.2.2 删除元素

fun main() {var list = mutableListOf("abc", "efg", "xyz")list.remove("abc")list.removeAt(0)list -= "xyz"list -= arrayOf("123")list -= listOf("456")list -= setOf("789")list.clear()
}

1.2.3 修改元素

var list = mutableListOf("abc", "efg", "xyz")
list[0] = "ABC"

1.2.4 访问元素

        1)访问元素

fun main() {var list = mutableListOf("zhan", "li", "wang")println(list[1]) // 打印: lilist[0] = "chen"list.any() // true, 判断List是否为空(容量为0)list.first() // chen, 获取首个元素list.last() // wang, 获取最后一个元素list.indexOf("wang") // 2, 查找元素对应的索引list.binarySearch("wang") // 2, 二分查找元素对应的索引
}

        2)遍历元素

fun main() {var list = mutableListOf("abc", "efg", "xyz")list.forEach(::println) // abc, efg, xyzfor ((index, item) in list.withIndex()) {println("[$index, $item]") // [0, abc], [1, efg], [2, xyz]}
}

1.3 修改元素顺序

1.3.1 翻转元素

fun main() {var list1 = mutableListOf(1, 2, 3, 4, 5)var list2 = list1.reversed() // 翻转List元素顺序, 并生成新的Listlist1.reverse() // 在原List上翻转数组元素顺序
}

1.3.2 打乱元素顺序

fun main() {var list1 = mutableListOf(1, 2, 3, 4, 5)var list2 = list1.shuffled() // 打乱List元素顺序, 并生成新的Listlist1.shuffle() // 打乱List元素顺序
}

1.3.3 元素排序

fun main() {var list1 = mutableListOf(3, 1, 5, 2, 4)var list2 = list1.sorted() // 从小到大排序, 并生成新的Listlist1.sort() // 从小到大排序var list3 = list1.sortedDescending() // 从大到小排序, 并生成新的Listlist1.sortDescending() // 从大到小排序
}

1.4 拼接列表元素

fun main() {var list = listOf("aa", "bb", "cc")var str1 = list.joinToString()println(str1) // 打印: aa, bb, ccvar str2 = list.joinToString("-", "[", "]")println(str2) // 打印: [aa-bb-cc]var str3 = list.joinToString(limit = 2, truncated = "***")println(str3) // 打印: aa, bb, ***var str4 = list.joinToString("/") {(it + it)}println(str4) // 打印: aaaa/bbbb/cccc
}

1.5 切片

fun main() {var list1 = listOf("AA", "BBB", "CC", "DDD")var list2 = list1.slice(1..2) // [BBB, CC], 截取1,2元素var list3 = list1.take(2) // [AA, BBB], 截取前2个元素var list4 = list1.takeLast(2) // [CC, DDD], 截取最后2个元素var list5 = list1.drop(2) // [CC, DDD], 截取第2个元素后面的元素var list6 = list1.dropLast(2) // [AA, BBB], 截取倒数第2个元素前面的元素
}

1.6 统计函数

fun main() {var list = mutableListOf(1, 2, 3)list.sum() // 6list.average() // 2.0list.max() // 3list.min() // 1list.count() // 3
}

1.7 集合运算

fun main() {var list1 = listOf("AAA", "BBB")var list2 = listOf("BBB", "CCC")println(list1 + list2) // [AAA, BBB, BBB, CCC]println(list1 - list2) // [AAA]println(list1 union list2) // [AAA, BBB, CCC]println(list1 intersect list2) // [BBB]println(list1 subtract list2) // [AAA]println(list2 subtract list1) // [CCC]println((list1 - list2) union (list2 - list1)) // [AAA, CCC]
}

1.8 map

1.8.1 map

fun main() {var list1 = listOf(5, 6, 7)var list2 = list1.map { it * it } // [25, 36, 49]
}

1.8.2 mapIndexed

fun main() {var list1 = listOf(5, 6, 7)var list2 = list1.mapIndexed { index, value ->"[$index, $value]" // [[0, 5], [1, 6], [2, 7]]}
}

1.9 groupBy

fun main() {var list = listOf("AA", "BBB", "CC", "DDD")// {2=[AA, CC], 3=[BBB, DDD]}var map: Map<Int, List<String>> = list.groupBy { it.length }
}

1.10 zip

1.10.1 zip

fun main() {var list1 = listOf(1, 2, 3)var list2 = listOf("AAA", "BBB", "CCC")// [(1, AAA), (2, BBB), (3, CCC)]var pairs: List<Pair<Int, String>> = list1.zip(list2)
}

1.10.2 unzip

fun main() {// [(1, AAA), (2, BBB), (3, CCC)]var pairList: List<Pair<Int, String>> = listOf(1 to "AAA",2 to "BBB",3 to "CCC")// ([1, 2, 3], [AAA, BBB, CCC])var listPair: Pair<List<Int>, List<String>> = pairList.unzip()
}

1.11 associate

fun main() {var list = listOf("AAA", "BBBBB", "CCCC")// {AAA=3, BBBBB=5, CCCC=4}var map1: Map<String, Int> = list.associateWith { it.length }// {3=AAA, 5=BBBBB, 4=CCCC}var map2: Map<Int, String> = list.associateBy { it.length }// {3=AAA, 5=BBBBB, 4=CCCC}var map3: Map<String, Int> = list.associate { it to it.length }
}

1.12 flatten

1.12.1 flatten

fun main() {var list = listOf(listOf("AA", "BB"), listOf("CC", "DD"))var flatten: List<String> = list.flatten() // [AA, BB, CC, DD]
}

1.12.2 flatMap

fun main() {var list = listOf(Container(listOf("AA")), Container(listOf("BB")))var flatten: List<String> = list.flatMap { it.list } // [AA, BB]
}class Container(var list: List<String>)

1.13 chunked

fun main() {var list1 = listOf("AA", "BBB", "CC", "DDD", "E", "FF", "GGG")var list2 = list1.chunked(3) // [[AA, BBB, CC], [DDD, E, FF], [GGG]]
}

2 Set

2.1 创建 Set

2.1.1 emptySet

var set = emptySet<String>()

2.1.2 Set 构造函数

var set1 = HashSet<Int>()
var set2 = LinkedHashSet<String>()
var set3 = TreeSet<String>()

2.1.3 setOf

var set1: Set<String> = setOf() // 只读Set
var set2: MutableSet<String> = mutableSetOf() // LinkedHashSet
var set3: HashSet<String> = hashSetOf() // HashSet
var set4: LinkedHashSet<String> = linkedSetOf() // LinkedHashSet
var set5: TreeSet<String> = sortedSetOf() // TreeSet
var set6: Set<String> = setOf("zhang", "li", "wang")
var set7: MutableSet<String> = mutableSetOf("zhang", "li", "wang")
var set8 = setOfNotNull(true, 5, 3f, "abc", null)

2.1.4 根据 Array 创建 Set

var arr = arrayOf(1, 2, 3)
var set1 = setOf(arr)
var set2 = setOfNotNull(arr)

2.2 增删改查

2.2.1 增加元素

fun main() {var set = mutableSetOf<String>()set.add("abc")set.add("xyz")set += "ABC"set += arrayOf("123")set += listOf("456")set += setOf("789")
}

2.2.2 删除元素

fun main() {var set = mutableListOf("abc", "efg", "xyz")set.remove("abc")set.removeAt(0)set -= "xyz"set -= arrayOf("123")set -= listOf("456")set -= setOf("789")set.clear()
}

2.2.3 访问元素

        1)访问元素

fun main() {var set = mutableSetOf("zhan", "li", "wang")println(set.elementAt(1)) // 打印: liset.any() // true, 判断List是否为空(容量为0)set.first() // chen, 获取首个元素set.last() // wang, 获取最后一个元素set.indexOf("wang") // 2, 查找元素对应的索引
}

        2)遍历元素

fun main() {var set = mutableSetOf("abc", "efg", "xyz")set.forEach(::println) // abc, efg, xyzfor ((index, item) in set.withIndex()) {println("[$index, $item]") // [0, abc], [1, efg], [2, xyz]}
}

2.3 修改元素顺序

2.3.1 翻转元素

fun main() {var set = mutableSetOf(1, 2, 3, 4, 5)var list = set.reversed() // 翻转Set元素顺序, 并生成新的List
}

2.3.2 打乱元素顺序

fun main() {var set = mutableSetOf(1, 2, 3, 4, 5)var list = set.shuffled() // 打乱Set元素顺序, 并生成新的List
}

2.3.3 元素排序

fun main() {var set = mutableSetOf(3, 1, 5, 2, 4)var list1 = set.sorted() // 从小到大排序, 并生成新的Listvar list2 = set.sortedDescending() // 从大到小排序, 并生成新的List
}

2.4 统计函数

fun main() {var set = mutableSetOf(1, 2, 3)set.sum() // 6set.average() // 2.0set.max() // 3set.min() // 1set.count() // 3
}

2.5 集合运算

fun main() {var set1 = setOf("AAA", "BBB")var set2 = setOf("BBB", "CCC")println(set1 + set2) // [AAA, BBB, BBB, CCC]println(set1 - set2) // [AAA]println(set1 union set2) // [AAA, BBB, CCC]println(set1 intersect set2) // [BBB]println(set1 subtract set2) // [AAA]println(set2 subtract set1) // [CCC]println((set1 - set2) union (set2 - set1)) // [AAA, CCC]
}

3 Map

3.1 创建 Map

3.1.1 Pair

        1)Pair 构造函数

public data class Pair<out A, out B>(public val first: A,public val second: B
) : Serializable

        2)to 函数

public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

        3)应用

var pair: Pair<Int, String> = 1001 to "Tom"

3.1.2 emptyMap

var map = emptyMap<Int, String>()

3.1.3 Map 构造函数

var map1 = HashMap<Int, String>()
var map2 = Hashtable<Int, String>()
var map3 = LinkedHashMap<Int, String>()
var map4 = ConcurrentHashMap<Int, String>()
var map5 = TreeMap<Int, String>()

3.1.4 mapOf

var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary"
)

3.2 增删改查

3.2.1 增加元素

        1)put

fun main() {var map: MutableMap<Int, String> = mutableMapOf()map.put(1001, "Tom")
}

        2)map[key] = value

fun main() {var map: MutableMap<Int, String> = mutableMapOf()map[1002] = "Mary"
}

        2)+

fun main() {var map: MutableMap<Int, String> = mutableMapOf()map += 1001 to "John"map += arrayOf(1002 to "Zhang")map += listOf(1003 to "Wang")map += setOf(1004 to "Li")map += mapOf(1005 to "Xie")
}

         4)putAll

fun main() {var map: MutableMap<Int, String> = mutableMapOf()var list1 = listOf(1, 2, 3)var list2 = listOf("zhang", "li", "wang")map.putAll(list1.zip(list2))
}

3.2.2 删除元素

fun main() {var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary")map.remove(1001)map -= 1002map -= arrayOf(1003)map -= listOf(1004)map -= setOf(1005)map.clear()
}

3.2.3 修改元素

var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary"
)
map[1001] = "John"

3.2.4 访问元素

        1)访问元素

var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary"
)
println(map[1001]) // Tom

        2)遍历元素

fun main() {var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary")map.forEach { key, value ->println("[$key, $value]") // [1001, Tom], [1002, Mary]}for ((key, value) in map) {println("[$key, $value]") // [1001, Tom], [1002, Mary]}
}

3.3 keys 和 values

3.3.1 keys、values、entries

fun main() {var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary")println(map.keys) // [1001, 1002]println(map.values) // [Tom, Mary]for (entry in map.entries) {println("[${entry.key}, ${entry.value}]") // [1001, Tom], [1002, Mary]}println(map.containsKey(1001)) // trueprintln(map.containsValue("Tom")) // true
}

3.3.2 mapKeys、mapValues

fun main() {var map1: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary")var map2 = map1.mapKeys { it.key - 1000 } // {1=Tom, 2=Mary}var map3 = map1.mapValues { it.value + "X" } // {1001=TomX, 1002=MaryX}
}

3.4 getOrDefault、getOrElse、getOrPut

fun main() {var map: MutableMap<Int, String> = mutableMapOf(1001 to "Tom",1002 to "Mary")// 在没有结果时返回给定的默认值var name1 = map.getOrDefault(1001, "xxx")// 使用函数式返回默认值var name2 = map.getOrElse(1001) { "xxx" }// 添加(1003, John), 并返回Johnvar name3 = map.getOrPut(1003) { "John" }
}

相关文章:

【Kotlin】List、Set、Map简介

1 List Java 的 List、Set、Map 介绍见 → Java容器及其常用方法汇总。 1.1 创建 List 1.1.1 emptyList var list emptyList<String>() // 创建空List 1.1.2 List 构造函数 var list1 List(3) { "abc" } // [abc, abc, abc] var list2 ArrayList<In…...

OpenCV 形态学处理函数

四、形态学处理&#xff08;膨胀&#xff0c;腐蚀&#xff0c;开闭运算&#xff09;_getstructuringelement()函数作用-CSDN博客 数字图像处理(c opencv)&#xff1a;形态学图像处理-morphologyEx函数实现腐蚀膨胀、开闭运算、击中-击不中变换、形态学梯度、顶帽黑帽变换 - 知乎…...

互联网摸鱼日报(2024-03-27)

互联网摸鱼日报(2024-03-27) 36氪新闻 谈“肉”色变&#xff0c;预制菜“顶流”要完&#xff1f; 欧美监管机构出重拳&#xff0c;苹果和谷歌都要被拆分了吗&#xff1f; 为什么产品经理的薪资待遇&#xff0c;这么高&#xff1f; AI PC&#xff1a;一场浩荡的革命 二氧化…...

2014年认证杯SPSSPRO杯数学建模B题(第二阶段)位图的处理算法全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现&#xff1a; 图形&#xff08;或图像&#xff09;在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形&#xff0c;位图则使用像素来描述图像。一般来说&#…...

C++基本语法

C是如何工作的 文章目录 C是如何工作的1、新建Hello World工程1.1使用Visual Studio新建项目1.2 HelloWorld1.2.1 命名空间1.2.2 输出输出 1.3 注释1.4 函数1.4.1 使用有返回的函数1.4.2 自定义函数 1、新建Hello World工程 1.1使用Visual Studio新建项目 按照下面的图片&…...

Node Sass does not yet support your current environment

项目运行时报错&#xff1a;Node Sass does not yet support your current environment 原因是node版本过高。 解决办法&#xff1a; 使用nvm管理node版本&#xff0c;&#xff08;如何安装nvm&#xff1f;请点击跳转&#xff09; 具体步骤如下&#xff1a; 1.查看当前node…...

长陆工业自动控制系统邀您到场参观2024第13届生物发酵产品与技术装备展

参展企业介绍 珠海市长陆工业自动控制系统股份有限公司于2004年在素有“百岛之市&#xff0c;浪漫之城”的珠江口西岸核心城市—珠海成立。长陆工业是流程工业智能制造自动化、信息化综合解决方案的提供者。产品遍及冶金、化工、建材、食品、石油、橡塑、能源、环保、物流、粮…...

数据仓库——维度表更新

维度表的更新 维度表修改规律: 绝大部分维度表都是不变的很多维度虽然会变化&#xff0c;但是变化的很缓慢源记录产品键不会改变产品描述及其他属性的改变都很缓慢在源OLTP 系统中&#xff0c;新的值会覆盖旧的值在数据仓库中&#xff0c;覆盖维度表的属性并不总是适当的做法…...

Web3创作整理 - 2024-02-23 ~ 2024-03-25

Web3 创作整理 - 2024-02-23 ~ 2024-03-25 整理下3月份的文章&#xff0c;方便大家阅读 分类文章地址&#x1fad1;ETH什么是Dapp&#x1f3bc;ETH什么是以太坊&#x1f3b5;ETH如何才能拥有ETH&#x1f3b6;ETHBTC网络 vs ETH网络&#x1f399;️ETHETH网络中的区块链&#x1…...

CSS(一)---【CSS简介、导入方式、八种选择器、优先级】

零.前言 本系列适用于零基础小白&#xff0c;亦或是初级前端工程师提升使用。 知识点较为详细&#xff0c;如果追求非常详细&#xff0c;请移步官方网站或搬运网站。 1.CSS简介 CSS全称&#xff1a;“Cascading Style Sheets”&#xff0c;中文名&#xff1a;“层叠样式表”…...

智慧公厕解决方案打造更加智能的卫生空间

一、智慧公厕方案概述 智慧公厕方案旨在解决现有公厕存在的诸多问题&#xff0c;包括民众用厕困难、环境卫生状况不佳、管理效率低下等方面。针对民众的需求和管理方面的挑战&#xff0c;智慧公厕提供了一套综合解决方案&#xff0c;包括智能导航、环境监测、资源管理等功能&a…...

美团0316春招笔试题

下面是美团2024-03-16笔试真题&#xff0c;进行了VP&#xff0c;由于未参与评测&#xff0c;故不保证正确性&#xff0c;仅供参考。 第一题 小美点外卖 求和然后减去满减和红包即可。 #include <bits/stdc.h> using namespace std; using LL long long ; int n, t, x,…...

typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存

Manjaro安装RabbitMQ 安装 sudo pacman -S rabbitmq rabbitmqadmin启动管理模块 sudo rabbitmq-plugins enable rabbitmq_managementsudo rabbitmq-server管理界面 http://127.0.0.1:15672/ 默认用户名和密码都是guest。 要使用 rabbitmqctl 命令添加用户并分配权限&#xf…...

怎样才能把重建大师的空三导进去CC?

导出空三文件xml两者都是通用的&#xff0c;cc和photoscan都可以兼容。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网格模型&#xff0c;可一键…...

命令模式(请求与具体实现解耦)

目录 前言 UML plantuml 类图 实战代码 模板 Command Invoker Receiver Client 前言 命令模式解耦了命令请求者&#xff08;Invoker&#xff09;和命令执行者&#xff08;receiver&#xff09;&#xff0c;使得 Invoker 不再直接引用 receiver&#xff0c;而是依赖于…...

开发一款MMOARPG难度到底有多大

开发一款MMOARPG难度到底有多大 MMORPG游戏开发到底有多难&#xff0c;我们按照过去开发的标准&#xff0c;就比如开发一款传奇&#xff0c;那时候哪会用什么别人的引擎&#xff0c;都是自研&#xff0c;从基础图形API开始。我们不考虑美术和策划&#xff0c;就单指程序&#x…...

RTSP应用:实现视频流的实时推送

在实现实时视频流推送的项目中&#xff0c;RTSP&#xff08;Real Time Streaming Protocol&#xff09;协议扮演着核心角色。本文将指导你通过安装FFmpeg软件&#xff0c;下载并编译live555&#xff0c;以及配置ffmpeg进行视频流推送&#xff0c;来实现一个基本的RTSP流媒体服务…...

Java八股文(数据结构)

Java八股文の数据结构 数据结构 数据结构 请解释以下数据结构的概念&#xff1a;链表、栈、队列和树。 链表是一种线性数据结构&#xff0c;由节点组成&#xff0c;每个节点包含了指向下一个节点的指针&#xff1b; 栈是一种后进先出&#xff08;LIFO&#xff09;的数据结构&a…...

ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1

一、ActiveMQ Artemis 介绍 Apache ActiveMQ Artemis 是一个高性能的开源消息代理&#xff0c;它完全符合 Java Message Service (JMS) 2.0 规范&#xff0c;并支持多种通信协议&#xff0c;包括 AMQP、MQTT、STOMP 和 OpenWire 等。ActiveMQ Artemis 由 Apache Software Foun…...

QGIS插件系列--WhiteBox Tools

WhiteBox Tools&#xff08;官网机翻&#xff09;: WhiteboxTools是由圭尔夫大学地貌测量和水文地理信息学研究小组&#xff08;GHRG&#xff09;开发的高级地理空间软件包和数据分析平台。该项目始于2017年<>月&#xff0c;并在分析能力方面迅速发展。WhiteboxTools的一…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...