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

Kotlin输入字母J时filter过滤结果为[]的原因及filter机制解析

问题分析:输入"J"时Kotlin代码输出空数组的原因及filter工作机制

一、输出空数组的原因

核心问题是类型不匹配导致equals比较失败:

  • var letter = readLine()!![0] 从输入中取出第一个字符,返回的是Char类型(比如输入"J"时,letter的值是'J')
  • it.substring(0,1) 对数组中的每个名字执行该方法,返回的是String类型(比如"John"执行后得到"J")
  • Kotlin中equals方法默认会先校验类型一致性,不同类型的对象直接返回false。所以"J".equals('J')的结果是false,所有名字都不满足过滤条件,最终得到空数组[]。

常见修复方式:

  • 将letter转为String类型:var letter = readLine()!!.substring(0,1)
  • 将substring结果转为Char类型:it[0].equals(letter)

二、filter函数的工作机制

  • filter是Kotlin集合的扩展函数,用于筛选符合条件的元素
  • 执行流程:遍历原集合的每一个元素,将元素传入指定的lambda表达式做条件判断
  • 若lambda返回true,该元素会被加入结果集合;返回false则被排除
  • 最终返回包含所有符合条件元素的新集合,原集合不会被修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:55:15