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

Java ArrayList导入冲突与add方法调用报错求助

解决ArrayList类名冲突及方法未找到问题

问题根源

  • 你自定义的类名ArrayList和Java标准库的java.util.ArrayList重名,编译器无法区分:导入标准库类时会提示冲突;移除导入后,代码里的ArrayList默认指向你自己写的空类,自然没有add()、size()这些方法。
  • 代码存在变量名拼写错误:nan被误写为nn,会导致编译报错。
  • 用普通for循环遍历并删除集合元素时,会出现索引错位问题(删除元素后后续元素前移,导致漏遍历)。

修复步骤

1. 重命名自定义类(推荐方案)

直接把你的类名改成和标准库不重复的名字,比如ItemListDemo,彻底解决类名冲突:

import java.util.Scanner;
import java.util.ArrayList;

// 重命名类,避免和java.util.ArrayList冲突
public class ItemListDemo
{
   public static void main(String[]args)
   {
      Scanner input = new Scanner(System.in);
      
      // 使用泛型指定集合存储Item类型,无需手动强制类型转换
      ArrayList<Item> itemList1 = new ArrayList<>();
      ArrayList<Item> itemList2 = new ArrayList<>();
      
      String itemName, itemId, factoryProduce;
      double itemPrice;
      int itemQuantity;
      
      for(int i=0; i<10; i++)
      {
         itemName = input.next();
         itemId = input.next();
         itemPrice = input.nextDouble();
         itemQuantity = input.nextInt();
         factoryProduce = input.next();         
         
         Item x = new Item(itemName, itemId, itemPrice, itemQuantity, factoryProduce);
      
         itemList1.add(x);
      }
            
      int count = 0;
      
      // 用迭代器遍历删除元素,避免索引错位
      var iterator = itemList1.iterator();
      while(iterator.hasNext()) {
          Item item = iterator.next();
          if(item.getFactoryProduce().equalsIgnoreCase("QuickService")) {
              itemList2.add(item);
              iterator.remove(); // 迭代器的remove方法是安全删除方式
              count++;
          }
      }
   }
}

2. 保留自定义类名的妥协方案(不推荐)

如果一定要保留ArrayList作为自定义类名,使用标准库ArrayList时必须写全类名,不能用导入语句:

import java.util.Scanner;

public class ArrayList
{
   public static void main(String[]args)
   {
      Scanner input = new Scanner(System.in);
      
      // 用全类名指定java.util.ArrayList,避免和自定义类混淆
      java.util.ArrayList<Item> itemList1 = new java.util.ArrayList<>();
      java.util.ArrayList<Item> itemList2 = new java.util.ArrayList<>();
      
      // 后续代码逻辑同上,注意修正变量名拼写错误
   }
}

这种方式代码冗余且容易出错,仅作为临时妥协方案。

3. 额外修复点

  • 修正变量名错误:把代码里的nn改成nan(或直接用更清晰的变量名如item)。
  • 使用泛型ArrayList<Item>替代原始类型,既避免强制类型转换,也让代码更安全易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:40:36