You need to enable JavaScript to run this app. Java Selenium Webdriver ArrayList与for循环实现集合配对的代码不符合预期
优惠活动
大模型
产品
解决方案
定价
更多

Java Selenium Webdriver ArrayList与for循环实现集合配对的代码不符合预期

核心问题定位

你现有代码存在两个明确逻辑错误,直接导致运行结果与预期不符:

  • 循环边界设置错误:原代码以仅含1个元素的lineUITextList.size()作为循环终止条件,循环自然仅执行1次就退出
  • 对象引用复用错误:原代码在循环外仅初始化1个LineDashboardDetails实例,循环过程中反复修改同一实例的属性、将同一引用加入集合。即使调整循环边界,最终集合内所有元素也会指向同一个对象,输出结果会全部是最后一组配对值
修正后实现代码
// 提前取出lineUITextList中的唯一公共值,避免循环内重复取值
String commonLineName = lineUITextList.get(0);

// 遍历上限改为machineUITextList的长度,覆盖所有机器值
for (int i = 0; i < machineUITextList.size(); i++) {
    // 每次循环内部新建独立对象,从根源避免引用复用问题
    LineDashboardDetails objLineDetail = new LineDashboardDetails();
    objLineDetail.lineName = commonLineName;
    objLineDetail.machineNames = machineUITextList.get(i).toString();
    LineDashboardDetailList.add(objLineDetail);
}

// 按要求格式打印验证
LineDashboardDetailList.forEach(item -> 
    System.out.println(item.lineName + "," + item.machineNames)
);

按照你给出的测试场景(lineUITextList为["Noun"]、machineUITextList为["Pen","Box","Note","Scale"]),上述代码运行后输出:
Noun,Pen
Noun,Box
Noun,Note
Noun,Scale
完全匹配预期格式。

边界注意事项
  • 直接取lineUITextList.get(0)的前提是你确认该集合永远有且仅有1个元素,若存在空集合的极端场景,建议补充非空判断,避免触发IndexOutOfBoundsException下标越界异常
  • 现有变量命名采用大驼峰开头的风格不符合Java常规命名规范,后续维护时可调整为小驼峰命名,降低协作成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 18:45:03