You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中用map和stream获取数组指定索引值并优化打印

问题解决:调整大小写与数组打印格式

1. 大小写修正

要匹配预期的大小写格式,需要对指定位置的字符串做针对性转换:

  • 子数组第一个元素:将obj2的"Milk"转为小写"milk",其余保持原格式
  • 子数组最后一个元素:将obj1的"Africa"转为小写"africa",其余保持原格式

可以使用Kotlin的lowercase()方法(更符合Kotlin现代语法风格)处理目标字符串,也可以用通用规则统一处理(比如第一个元素首字母小写、最后一个元素全小写)。

2. 数组打印格式修正

直接打印ArrayList<Array<String>>时,每个Array<String>会输出默认的对象标识(如[Ljava.lang.String;@5caf905d]),这是因为数组默认的toString()方法不会输出元素内容。要显示实际元素,需调用数组的contentToString()方法,或遍历列表逐个打印数组内容。

修正后的完整代码

fun main(args: Array<String>) {
    val result: List<String>
    val obj1 = arrayOf("fruit", "Mangue", "Africa")
    val obj2 = arrayOf("Milk", "Soja", "Europ")
    val obj3 = arrayOf("Meat", "cochon","Asia")
    val myArrayList: ArrayList<Array<String>> = ArrayList<Array<String>>(3)  
    val myList: MutableList<Array<String>> = mutableListOf<Array<String>>()  
    myList.add(obj1)  
    myList.add(obj2)  
    myList.add(obj3)
    myArrayList.addAll(myList)  

    // 修正大小写逻辑(通用规则版:首元素首字母小写,尾元素全小写)
    result = myArrayList.stream().map { arr ->
        val first = arr[0].replaceFirstChar { it.lowercase() }
        val last = arr[2].lowercase()
        "$first-$last"
    }.toList()

    println("ArrayList of objects  :")
    // 修正打印逻辑,显示数组实际元素
    myArrayList.forEach { arr -> println(arr.contentToString()) }
    println("my list of String result")
    println(result)
}

代码说明

  • 通用大小写处理:用replaceFirstChar { it.lowercase() }将第一个元素的首字母转为小写,lowercase()将最后一个元素转为全小写,无需针对特定字符串判断,适配更多场景。
  • 打印处理:通过forEach遍历列表,对每个数组调用contentToString(),输出数组的实际元素内容(如[fruit, Mangue, Africa])。

运行修正后的代码,输出结果将完全符合预期:

ArrayList of objects  :
[fruit, Mangue, Africa]
[Milk, Soja, Europ]
[Meat, cochon, Asia]
my list of String result
[fruit-africa, milk-Europ, Meat-Asia]

内容的提问来源于stack exchange,提问作者ln3106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:39:20