如何修改Map中Order对象的orderItems列表属性添加元素
问题描述
现有一个Map:
Map<String, Order> activeOrders = { // ... 内部已有部分值 ... }
其中键(订单ID)为String类型,值为自定义Order对象,该对象定义如下:
// 作为Map值的自定义对象 Order( String name; List<OrderItem> orderItems; )
需要实现一个函数,接收订单ID(作为Map的键)和OrderItem作为参数,在activeOrders中查找对应orderId键的键值对,并将给定元素添加到该键对应Order对象的orderItems列表中。
如何访问Order对象的orderItems列表属性并调用add方法来追加新元素?需要实现的函数框架如下:
void addItem(String orderId, OrderItem item) { // 将元素添加到对应orderId键的Map值的orderItems属性中 }
我曾尝试在函数内创建新的Order对象来替换现有值,但这并非需求。目标是修改现有对象的属性,向其列表属性中追加新元素。
解决方案
直接通过Map获取对应的Order对象,调用其orderItems列表的add方法即可。因为Order是引用类型,修改它的属性会直接作用于Map中存储的原对象,无需替换整个Map条目。
实现代码如下:
void addItem(String orderId, OrderItem item) { // 从Map中取出对应订单ID的Order对象 Order? targetOrder = activeOrders[orderId]; // 判断对象是否存在,避免空指针异常 if (targetOrder != null) { // 直接调用列表的add方法追加元素 targetOrder.orderItems.add(item); } }
关键说明
- 从
activeOrders中取出的targetOrder是原对象的引用,对它的属性修改会直接影响Map中存储的那个Order实例。 - 增加空值判断是为了避免传入不存在的订单ID时触发错误,你也可以根据业务需求添加额外处理逻辑(比如抛出异常、打印提示信息等)。
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

