kotlin: max/min/maxOrNull/minOrNull/MaxByOrNull/MinByOrNull/minOfOrNull/maxOfOrNull函数

一,功能

  • minOrNull():返回集合中最小的元素,若集合为空则返回 null

  • maxOrNull():返回集合中最大的元素,若集合为空则返回 null

  • minByOrNull { }:返回具有最小属性值的元素(集合为空时返回 null)。

  • maxByOrNull { }:返回具有最大属性值的元素(集合为空时返回 null)。

  • minOfOrNull { }:返回所有选择器函数结果中的最小值(集合为空时返回 null)。

  • maxOfOrNull { }:返回所有选择器函数结果中的最大值(集合为空时返回 null)。

区别:

  • maxByOrNull 和 minByOrNull 会返回属性值最大的元素,而不是值本身。

  • maxOfOrNull 和 minOfOrNull 返回的是选择器结果的最大/最小值。

二,例子:

代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

            // 最小值和最大值
            println(numbers.min()) // 1
            println(numbers.minOrNull()) // 1
            println(numbers.max()) // 10
            println(numbers.maxOrNull()) // 10

            val mList2: ArrayList<Int> = arrayListOf()

            //println(mList2.min()) // 触发异常
            println(mList2.minOrNull()) // null
            //println(mList2.max()) // 触发异常
            println(mList2.maxOrNull()) // null
        }

运行结果:

image

三,例子:

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            val words = listOf("anne", "michael", "caroline", "dimitry","abc", "emilio")

            // 根据长度选择最大/最小的字符串
            println(words.maxByOrNull { it.length }) // caroline
            println(words.minByOrNull { it.length }) // abc

            // 最大/最小长度值
            println(words.maxOfOrNull { it.length }) // 8
            println(words.minOfOrNull { it.length }) // 3

            // 使用谓词根据条件进行查找,此时比较的是表达式给出的boolean结果
            println(words.maxByOrNull { it.length > 5 }) // michael
            println(words.maxByOrNull { it.length < 5 }) // anne
            println(words.minByOrNull { it.length > 5 }) // anne
            println(words.minByOrNull { it.length < 5 }) // michael

            var fruitsMap = mutableMapOf("apple" to 2.5, "orange" to 5, "pear" to 3)
            val maxPriceFruit = fruitsMap.maxByOrNull { it.value.toFloat() }
            println(maxPriceFruit)   //orange=5
            val minPriceFruit = fruitsMap.minByOrNull { it.value.toFloat() }
            println(minPriceFruit)    //apple=2.5
        }

运行结果:

image

 

posted @ 2025-08-23 09:20  刘宏缔的架构森林  阅读(18)  评论(0)    收藏  举报