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

东莞视频网站制作广州最新消息

东莞视频网站制作,广州最新消息,开源电商网站建设价格,wordpress 门户宽屏模板前言 Decrement(递减) → 将一个值减 1 的操作 Predicate(谓词) → 返回布尔值(逻辑值)的函数 Reference(引用) → 允许使用自定义名称与对象交互 Runtime(运行时&…

前言

  • Decrement(递减) → 将一个值减 1 的操作

  • Predicate(谓词) → 返回布尔值(逻辑值)的函数

  • Reference(引用) → 允许使用自定义名称与对象交互

  • Runtime(运行时) → 应用程序正在运行的时刻


从输入读取数组

要从控制台读取特定大小的数组,我们首先需要创建一个已知大小的数组。在括号内,我们应该放置readln(),借助它我们可以从控制台读取输入。该readln()函数返回一个字符串,因此不要忘记将输入字符串转换为所创建数组的类型。

val numbers = IntArray(5) { readln().toInt() } // on each line single numbers from 1 to 5
println(numbers.joinToString()) // 1, 2, 3, 4, 5

如果要在一行中读取一个数组,请使用以下方法。您可以使用 readln() 函数读取该数组。您将得到一个字符串,您应该将其拆分。

// here we have an input string "1 2 3 4 5"val numbers = readln().split(" ").map { it.toInt() }.toTypedArray()
println(numbers.joinToString()) // 1, 2, 3, 4, 5

还有一种方法可以让你忽略输入字符串中的换行符和多余的空格。你可以借助正则表达式来实现这一点,正则表达式在文本搜索和编辑中经常使用。

val regex = "\\s+".toRegex()
val str = "1 2\t\t3  4\t5  6"
val nums = str.split(regex).map { it.toInt() }.toTypedArray()
println(nums.joinToString()) // 1, 2, 3, 4, 5, 6

数组大小

val numbers = intArrayOf(1, 2, 3, 4, 5) println(numbers.size) // 5

访问元素

您可以更改数组元素的值。使用索引在数组中设置值。

通过索引设置值:

array[index] = elem

通过索引获取值:

val elem = array[index]

数组索引是从0(第一个元素)到array.size-1(最后一个元素)的数字。

比较数组

val numbers1 = intArrayOf(1, 2, 3, 4)
val numbers2 = intArrayOf(1, 2, 3, 4)
val numbers3 = intArrayOf(1, 2, 3)println(numbers1.contentEquals(numbers2)) // true
println(numbers1.contentEquals(numbers3)) // false

请注意,运算符==!=不会比较数组的内容,它们仅比较指向同一对象的变量:

val simpleArray = intArrayOf(1, 2, 3, 4)
val similarArray = intArrayOf(1, 2, 3, 4)println(simpleArray == simpleArray)  // true, simpleArray points to the same object
println(simpleArray === similarArray) // false, similarArray points to another object

any()

使用谓词时,any()如果至少有一个集合元素与我们在 中定义的谓词匹配,则该函数将返回 true any()。也可以不使用谓词来调用该函数来检查集合是否为空。

fun main() {val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)// any number is even?println(numbers.any { x -> x % 2 == 0 }) // true// any number is greater than 100println(numbers.any { x -> x > 100 }) // falseval palindromes = listOf("racecar", "mom", "dad", "dog")// any palindrome?println(palindromes.any { x -> x.reversed() == x }) // true
}

none()

使用谓词时,none()如果集合中没有任何元素与 中指定的谓词匹配,则该函数将返回 true none()。与 类似any(),也可以不使用谓词来调用它,以检查集合是否为空。

fun main() {val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)// none of the numbers is even?println(numbers.none { x -> x % 2 == 0 }) // false// none of the numbers is greater than 100println(numbers.none { x -> x > 100 }) // trueval palindromes = listOf("racecar", "mom", "dad", "dog")// none is a palindrome?println(palindromes.none { x -> x.reversed() == x }) // falseval palindromes2 = listOf("cat", "dog")// none is a palindrome?println(palindromes2.none { x -> x.reversed() == x }) // true
}

all()

仅当集合中的所有元素都满足给定的谓词时,该all()函数才会返回 true。该函数的一个特殊之处在于,当集合为空时,它始终返回 true ; 这种特性在数学中也称为“空洞真值”。

fun main() {val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)// all numbers are even?println(numbers.all { x -> x % 2 == 0 }) // false// all numbers are less than 100println(numbers.all { x -> x < 100 }) // trueval palindromes = listOf("racecar", "mom", "dad", "dog")// all are palindromes?println(palindromes.all { x -> x.reversed() == x }) // falseval palindromes2 = listOf("racecar", "mom", "dad")// all are palindromes?println(palindromes2.all { x -> x.reversed() == x }) // trueval emptyIntList = emptyList<Int>()// all are even?println(emptyIntList.all { x -> x % 2 == 0 }) // trueval emptyStringList = emptyList<String>()// all are palindromes?println(emptyStringList.all { x -> x.reversed() == x }) // true
}

对对象进行排序

sorted()返回一个元素按升序排列的集合。sortedDescending()用于应用降序排列。所有基本的 Kotlin 集合都支持这些方法。

fun main() {val numbers = listOf(3, 5, 6, 4, 1, 8, 2, 7)println(numbers.sorted()) // [1, 2, 3, 4, 5, 6, 7, 8]println(numbers.sortedDescending()) // [8, 7, 6, 5, 4, 3, 2, 1]val words = listOf("racecar", "mom", "dad", "abracadabra", "MANDRAKE")println(words.sorted()) // [MANDRAKE, abracadabra, dad, mom, racecar]println(words.sortedDescending()) // [racecar, mom, dad, abracadabra, MANDRAKE]
}

倒序排列

我们可以使用两种函数以索引顺序的相反方向获取集合的副本:reversed()asReversed()。先来看看它们的区别。
请记住,在 ASCII 或 UTF-8 中,大写字母的编码值比小写字母小,所以在按十进制编码排序时,大写字母会排在小写字母前。

reversed() 函数

  • reversed() 会返回原集合的副本,并按索引顺序反转排列

  • 原始集合发生变化时,这个副本不会受到影响

fun main() {val numbers = mutableListOf(3, 5, 6, 4, 1, 8, 2, 7)val reversedNumbers = numbers.reversed()println(numbers) // 原始集合:[3, 5, 6, 4, 1, 8, 2, 7]println(reversedNumbers) // 反转后的副本:[7, 2, 8, 1, 4, 6, 5, 3]numbers.add(9)println(numbers) // 修改后的原始集合:[3, 5, 6, 4, 1, 8, 2, 7, 9]println(reversedNumbers) // 不变的副本:[7, 2, 8, 1, 4, 6, 5, 3]val words = listOf("racecar", "mom", "dad", "abracadabra", "MANDRAKE")val wordsReversed = words.reversed()println(words) // 原始列表:[racecar, mom, dad, abracadabra, MANDRAKE]println(wordsReversed) // 反转后的副本:[MANDRAKE, abracadabra, dad, mom, racecar]
}

asReversed() 方法

  • asReversed() 返回的是原集合的一个视图(引用),按索引反转排列。

  • 更轻量,因为不复制数据

  • 但要注意:如果原集合发生变化,这个视图也会同步变化

fun main() {val numbers = mutableListOf(3, 5, 6, 4, 1, 8, 2, 7)val numbersAsReversed = numbers.asReversed()println(numbers) // 原始集合:[3, 5, 6, 4, 1, 8, 2, 7]println(numbersAsReversed) // 反转视图:[7, 2, 8, 1, 4, 6, 5, 3]numbers.add(9)println(numbers) // 原始集合变了:[3, 5, 6, 4, 1, 8, 2, 7, 9]println(numbersAsReversed) // 同步变化的视图:[9, 7, 2, 8, 1, 4, 6, 5, 3]val words = listOf("racecar", "mom", "dad", "abracadabra", "MANDRAKE")val wordsAsReversed = words.asReversed()println(words) // 原始列表:[racecar, mom, dad, abracadabra, MANDRAKE]println(wordsAsReversed) // 反转视图:[MANDRAKE, abracadabra, dad, mom, racecar]
}

随机顺序

shuffled() 方法返回一个新的集合,其中原有的元素被随机打乱

  • 可以不带参数使用,也可以传入一个 Random 实例。

  • 如果传入一个种子(seed),每次运行程序时结果都可复现

fun main() {val numbers = mutableListOf(3, 5, 6, 4, 1, 8, 2, 7)val shuffledNumbers = numbers.shuffled()println(numbers) // 原始集合:[3, 5, 6, 4, 1, 8, 2, 7]println(shuffledNumbers) // 随机排列,如:[5, 3, 6, 7, 1, 8, 2, 4]val words = listOf("racecar", "mom", "dad", "abracadabra", "MANDRAKE")val shuffledWords = words.shuffled(Random(1))println(words) // 原始列表:[racecar, mom, dad, abracadabra, MANDRAKE]println(shuffledWords) // 同一个种子的随机结果:[MANDRAKE, abracadabra, mom, dad, racecar]
}

总结

在本节中,你学习了 Kotlin 中对集合进行不同顺序排列的几种方式:

  • 正序(原始顺序)

  • 倒序reversed() 创建副本,asReversed() 创建视图)

  • 随机顺序shuffled() 随机打乱)

这些方法提供了一种优雅且简洁的方式来重新组织集合数据。

GeeksForGeeks

一个帮助你学习编程和准备技术面试的免费网站(也有部分付费内容)

Stack Overflow

一个专注于编程技术问答的知名社区网站,程序员可以在上面:

  • 提出编程相关的问题(如:语法错误、框架使用、调试帮助等)

  • 回答其他用户的问题

  • 搜索海量的历史问题和解决方案

  • 通过投票机制识别高质量答案

http://www.dtcms.com/wzjs/501814.html

相关文章:

  • 宜宾建设网国内好的seo
  • 临沂网站建设举措百度热搜关键词排名
  • wordpress站群 优化单个药品营销策划方案
  • 免费app制作工具湖南网站seo找行者seo
  • 武汉网站的制作市场推广计划怎么写
  • 网站建设伍金手指下拉7搜索引擎排名优化包括哪些方面
  • 江西求做网站百度平台商家客服电话
  • 想做网站怎么跟做网站的公司谈判百度搜索引擎的功能
  • 明年做那个网站致富seo是什么职位简称
  • 网站使用的主色调拉新推广渠道
  • 怎样推销网站建设软文营销成功案例
  • 昆明旅行社网站开发百度一下官网入口
  • 网站建设 中企动力泉州抖音搜索关键词推广
  • 柳州市建设投资开发公司网站深圳全网推互联科技有限公司
  • 广州网站建设解决方案百度站长平台如何添加网站
  • 陕西的网站建设公司哪家好seo优化推广
  • php网站搭建教程账号权重查询
  • 动态网站开发平台用什么好seo外包公司费用
  • 上海网站制作怎么选网站seo优化有哪些方面
  • 网站不想被收录全媒体广告代理加盟
  • 北京南昌网站制作谷歌seo代运营
  • 如何做网站流量分析上海百度推广公司
  • 龙华三网合一网站建设建立免费网站
  • 三五互联网站管理登录地址深圳网络推广平台
  • 永嘉哪里有做网站谷歌外贸平台叫什么
  • 鲅鱼圈网站怎么做app推广接单平台有哪些
  • 网站建设开发招标书如何做网站推广私人
  • 宜春做网站公司怎么样重庆网站seo好不好
  • 新的网站平台如何做地推搜索量查询
  • 网站开发的时间流程最近的疫情情况最新消息