这个方法有什么问题?报错

这个方法有什么问题?报错

//菜品名称查询菜品信息方法

public List<Map<String, Object>> getFoodByName(String foodName){

for (int i = 0; i < db.size(); i++) {

if (foodName.equals(((Food) db.get(i)). getDishes())) {

return (List<Map<String, Object>>) db.get(i);

}

}

return null;

}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

首先db是个List吧,db.get(i)取出来的内容是一个Map集合,所以db.get(i)是不能强制转换成Food类的对象的,因为是Map,不是Food。

所以应该是Map map=db.get(i);然后再用map的get(key)方法去把对应的信息取出来。

按照这个思路再试试。

祝学习愉快!

  • 星辰3619607 提问者 #1
    是这样写吗 public List<Map<String, Object>> getFoodByName(String foodName){ for (int i = 0; i < db.size(); i++) { if (foodName.equals(((Food) db.get(i)). getDishes())) { Map map = db.get(i); return (List<Map<String, Object>>) map.get(foodName); } } return null; }
    2017-12-21 14:04:56
  • 星辰3619607 提问者 #2
    非常感谢!
    2017-12-21 15:09:42
好帮手慕珊 2017-12-21 14:50:09

可以参考一下如下代码,注意注释部分的内容说明:

public List<Map<String, Object>> getFoodByName(String foodName){

//此处再定义一个List<Map<String, Object>>的对象,用来存储多个菜名相同的菜品,也就是假设同名的菜品不是一个

List<Map<String, Object>> list1=new ArrayList<Map<String,Object>>();


for (int i = 0; i < db.size(); i++) {

Map<String,Object> map=db.get(i); //从List中取出一条信息,就是一个Map的对象

//比较Map中存储的foodName的value值,和参数的foodName是否相等

//使用map.get("foodName")获取到值的前提是,你在存储数据的时候,存放foodName值的key是"foodName"

if (foodName.equals(map.get("foodName"))) {

  list1.add(map);

}

}

return null;


}

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师