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

Flutter中如何基于Orders对象的orderType字段过滤PointOfServices列表

需求可行性及实现方案

这个需求完全可行,核心逻辑是两步过滤:先为每个服务点筛选出orderType为inventory的订单,再剔除掉没有符合条件订单的服务点,最终得到符合要求的服务点列表。

Python 实现示例

假设数据结构如下(模拟你的业务对象):

class Order:
    def __init__(self, order_type):
        self.orderType = order_type

class PointOfService:
    def __init__(self, orders):
        self.orders = orders

# 模拟输入的服务点列表
pos_list = [
    PointOfService([Order('inventory'), Order('delivery')]),
    PointOfService([Order('delivery')]),
    PointOfService([Order('inventory')])
]

过滤实现代码:

filtered_pos = []
for pos in pos_list:
    # 筛选当前服务点中符合条件的订单
    valid_orders = [order for order in pos.orders if order.orderType == 'inventory']
    # 只有当存在有效订单时,才保留该服务点(并更新其订单列表)
    if valid_orders:
        pos.orders = valid_orders
        filtered_pos.append(pos)

# 验证结果
for item in filtered_pos:
    print([o.orderType for o in item.orders])
# 输出结果: ['inventory'], ['inventory']

Java 实现示例

假设业务实体类定义如下:

class Order {
    private String orderType;
    public Order(String orderType) { this.orderType = orderType; }
    public String getOrderType() { return orderType; }
}

class PointOfService {
    private List<Order> orders;
    public PointOfService(List<Order> orders) { this.orders = orders; }
    public List<Order> getOrders() { return orders; }
    public void setOrders(List<Order> orders) { this.orders = orders; }
}

过滤逻辑实现:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class PosFilterDemo {
    public static void main(String[] args) {
        // 模拟输入的服务点列表
        List<PointOfService> posList = new ArrayList<>();
        posList.add(new PointOfService(List.of(new Order("inventory"), new Order("delivery"))));
        posList.add(new PointOfService(List.of(new Order("delivery"))));
        posList.add(new PointOfService(List.of(new Order("inventory"))));

        List<PointOfService> filteredPosList = new ArrayList<>();
        for (PointOfService pos : posList) {
            // 过滤当前服务点的有效订单
            List<Order> validOrders = pos.getOrders().stream()
                    .filter(order -> "inventory".equals(order.getOrderType()))
                    .collect(Collectors.toList());
            // 仅保留包含有效订单的服务点
            if (!validOrders.isEmpty()) {
                pos.setOrders(validOrders);
                filteredPosList.add(pos);
            }
        }

        // 打印验证结果
        filteredPosList.forEach(pos -> 
            pos.getOrders().forEach(order -> System.out.println(order.getOrderType()))
        );
        // 输出结果: inventory, inventory
    }
}

注意事项

  • 如果你不想修改原PointOfService对象,可以创建新的对象实例,将过滤后的订单列表传入新对象,避免对原数据造成影响。
  • 其他编程语言(如JavaScript、C#)的实现逻辑完全一致:先处理每个服务点内的订单过滤,再过滤掉无有效订单的服务点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:05:47