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

为何MutableList<List<Restaurant?>>访问首元素时出现类型不匹配错误?

问题分析与解决

你的问题核心不是List和MutableList的区别,而是修改类型时不小心多嵌套了一层列表结构:

  1. 类型不匹配的原因
    你之前用List时逻辑正常,说明原来的restaurantList类型是List<Restaurant?>(单层列表,每个元素是Restaurant?)。但现在改成MutableList<List<Restaurant?>>后,restaurantList变成了列表的列表——外层是可变列表,每个元素又是一个List<Restaurant?>。

    这时候restaurantList[0]取到的是内层的整个列表(类型为List<Restaurant?>),而你的main变量类型是Restaurant?,两者类型完全不兼容,所以会报错。

  2. 两种解决方向

    • 如果restaurantList本来就应该是单层列表(直接存储Restaurant?元素),把参数类型改成MutableList<Restaurant?>即可:

      @Composable
      fun ComposeMapDemo(restaurantList: MutableList<Restaurant?>, navController: NavController){
          var main by remember{ mutableStateOf<Restaurant?>(null) }
          if (restaurantList.isNotEmpty()){
              main = restaurantList[0]
          }
      }
      
    • 如果确实需要两层列表(比如按分组存储餐厅),则要明确取内层列表中的具体元素,同时要处理内层列表为空的情况:

      @Composable
      fun ComposeMapDemo(restaurantList: MutableList<List<Restaurant?>>, navController: NavController){
          var main by remember{ mutableStateOf<Restaurant?>(null) }
          // 先判断外层和内层列表都不为空
          if (restaurantList.isNotEmpty() && restaurantList[0].isNotEmpty()){
              main = restaurantList[0][0] // 取第一个分组的第一个餐厅
          }
      }
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:07:34