Java foreach - 通过 ArrayList 进行搜索

标签 java arraylist foreach

我正在尝试搜索数组列表并返回一个对象。我有一个 Vehicle 类,其中有一个名为 search 的方法,并且注册号和数组列表作为参数传递。

但是问题是,当遍历 foreach 时,系统永远不会尝试比较 2 个字符串(寄存器编号),因此该方法总是返回一个空对象。

方法:

 public Vehicle search(String id, List<Vehicle> myList) {
    Vehicle currenctVeh = new Vehicle();
     for(Vehicle v: myList)
     {
         if(v.regNo == id)
         {
             currenctVeh = v;
         }
     }
     return currenctVeh;
}

被调用:

Vehicle searchVeh = new Vehicle();
            String regNum = JOptionPane.showInputDialog(null, "Enter Vehicle Registration Number");
            searchVeh.search(regNum, allVehicles);
            System.out.println(searchVeh.toString());

最佳答案

字符串使用equals进行比较,而不是==

== 在使用基本类型时可以工作,但对于对象则有区别:

  • == 检查变量是否引用相同的对象。
  • equals 检查变量引用的对象是否相同(取决于这些对象的 equals 的具体实现)。

你需要这个:

if(v.regNo.equals(id))
{
    currenctVeh = v;
}

此外,您不需要将 currenctVeh 初始化为新车辆,这就足够了:

Vehicle currenctVeh = null;

关于Java foreach - 通过 ArrayList 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999482/

相关文章:

java - Java 中的监视器类

c# - 列表中的 foreach [C#]

PHP foreach 循环上的空行

Eclipse 上的 Java Wildfly swarm

java - 如何控制 Action 监听器的焦点监听器?

java - 如何使用NiFi进程 session 迁移功能?

Java ArrayList - 检查列表是否为空

java - 子类无法访问父类ArrayList中的内容

java - 将 ArrayList 从 Servlet 传递到 JSP 时出错

c# - 如何用LINQ表达式替换foreach