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

Java如何从字符串列表中查找配送负载最低的司机对应条目

实现配送负载最低司机识别

当前存储的司机信息格式为姓名, 所在位置, 配送负载,示例数据:

Wesley Smith, London, 4
Mark Hammond, London, 2
Abul Ali, London, 12
Ned Cayhill, London, 6

现有代码存在的问题

  • 泛型声明不匹配:deliveries列表指定泛型为Integer,初始化时却写了new ArrayList<String>(),编译会报错
  • 语法缺失:int intLoad = Integer.parseInt(load)行末尾缺少分号
  • 逻辑偏差:单独把负载值抽离到独立列表后,负载和原始司机条目失去绑定关系;且当前调用Collections.max取的是最大负载值,和找最低负载的需求不符

最简实现方式

不需要单独维护负载列表,单次遍历原司机列表时,同步维护「当前遇到的最小负载值」和「对应司机条目」两个变量即可,直接拿到目标结果:

import java.util.ArrayList;

public class DriverLoadMatcher {
    public static void main(String[] args) {
        ArrayList<String> matchedDrivers = new ArrayList<>();
        matchedDrivers.add("Wesley Smith, London, 4");
        matchedDrivers.add("Mark Hammond, London, 2");
        matchedDrivers.add("Abul Ali, London, 12");
        matchedDrivers.add("Ned Cayhill, London, 6");

        int minLoad = Integer.MAX_VALUE;
        // 最终要的最低负载司机条目就存在这个变量里
        String targetDriver = null;

        for (String entry : matchedDrivers) {
            // 截取最后一个逗号后的内容,去掉首尾空格避免转整数失败
            int currentLoad = Integer.parseInt(
                entry.substring(entry.lastIndexOf(",") + 1).trim()
            );
            if (currentLoad < minLoad) {
                minLoad = currentLoad;
                targetDriver = entry;
            }
        }

        // 测试输出,结果为 Mark Hammond, London, 2
        System.out.println(targetDriver);
    }
}

如果后续需要频繁处理司机信息,建议单独定义Driver类,将姓名、位置、配送负载声明为类属性,避免反复做字符串截取操作,代码可维护性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:15:18