我遇到了一个问题,我试图在名为cars的ArrayList中获取项目的位置。
Car car = new Car(int idcar, String model, String brand); //Here it's an example
ArrayList<Car> cars = new ArrayList<Car>();
假设我在ArrayList中有5辆车,我想得到3号车的信息,所以我试图用函数indexOf()来获取位置,但它总是返回值-1。
我知道值-1它&#39; S时,它没&#39;吨发现的任何汽车,它&#39的数组列表; s等于到我在功能使用汽车。可能是因为当我使用第二个构造函数并尝试使用indexOf()查找对象时,idcar为null?我使用这样的函数:
int position = cars.indexOf(car);
我认为这是因为我有2个类Car的构造函数。一个是idcar,模特和品牌,另一个是模特和品牌。我之所以这样做,是因为如果我不知道汽车的内容,我就无法在功能中使用汽车,因此它是一个地狱循环,我不知道如何结束它。
它连接到一个数据库,保存你插入到arraylist中的所有汽车,这就是我需要id的原因,因为如果我每天输入7辆汽车,关闭应用程序并运行再一次,我不知道这辆车的身份证(这是它在arraylist中的位置),例如,我无法删除其中一个。
当然,我已经在Car类中设置并设置了方法,以便在我对对象Car进行语音化时获取或设置所有信息。
我希望能够清楚地理解它。
非常感谢!
答案 0 :(得分:2)
如果您还没有实现Car的equals()方法,则必须确保将完全相同的Car实例传递给indexOf()方法,作为实例包含的实例。列表。
这是因为indexOf()使用包含的对象&#39; equals()方法和equals()默认实现只是一个==比较。
实施Car的equals()方法是有意义的。