我正在尝试搜索数组列表并返回一个对象。我有一个 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/