我有一个问题,我试图在一个名为 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 是当它在数组列表中没有找到任何汽车时它等于我在函数中使用的汽车。可能是因为当我使用第二个构造函数并尝试使用 indexOf() 查找对象时 idcar 为 null?我使用这样的功能:
int position = cars.indexOf(car);
我认为这是因为我有 2 个类 Car 的构造函数。一个带有 idcar、型号和品牌,另一个带有型号和品牌。我这样做是因为如果我不知道汽车的 ID,我就不能在函数中使用汽车,所以这是一个 hell 般的循环,我不知道如何结束它。
它连接到一个数据库,该数据库保存了您插入数组列表中的所有汽车,这就是我需要 ID 的原因,只是因为如果有一天我输入 7 辆汽车,关闭应用程序并再次运行它,我将不知道这辆车的 ID(它是数组列表中的位置),例如,我将无法删除其中之一。
当然,当我初始化对象 Car 时,我在 Car 类中拥有所有 get 和 set 方法来获取或设置所有信息。
我希望它能被清楚地理解。
非常感谢!
最佳答案
如果您尚未实现 Car 的 equals() 方法,则必须确保将与列表中包含的实例完全相同的 Car 实例传递给 indexOf() 方法。
这是因为 indexOf() 使用包含对象的 equals() 方法,而 equals() 默认实现只是一个 == 比较。
实现 Car 的 equals() 方法很有意义。
关于java - 如何在 Android 的 ArrayList 中使用 indexOf()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000743/