【问题标题】:How to use indexOf() in an ArrayList on Android?如何在 Android 的 ArrayList 中使用 indexOf()?
【发布时间】:2015-03-12 02:07:41
【问题描述】:

我有一个问题,我试图在一个名为 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 为空?我使用这样的功能:

int position = cars.indexOf(car);

我认为这是因为我有 2 个 Car 类的构造函数。一个有 idcar、型号和品牌,另一个只有型号和品牌。我这样做是因为如果我不知道汽车的 id,我就不能在函数中使用汽车,所以这是一个地狱循环,我不知道如何结束它。

它连接到一个数据库,该数据库保存了您插入到数组列表中的所有汽车,这就是我需要 id 的原因,只是因为如果我一天输入 7 辆汽车,关闭应用程序并再次运行它,我不会知道例如,这辆车的 id(它是数组列表中的位置),我将无法删除其中之一。

当然,当我初始化对象 Car 时,我在 Car 类中有所有 get 和 set 方法来获取或设置所有信息。

我希望它可以清楚地理解。

非常感谢!

【问题讨论】:

  • "我想获取3号车的信息,所以我尝试用函数indexOf()获取位置..." 为什么使用indexOf() if你知道3 的索引是什么吗?为什么不直接使用cars.get(3)

标签: java android arraylist indexof


【解决方案1】:

如果您尚未实现 Car 的 equals() 方法,则必须确保将与列表中包含的实例完全相同的 Car 实例传递给 indexOf() 方法。

这是因为 indexOf() 使用了包含对象的 equals() 方法,而 equals() 默认实现只是一个 == 比较。

实现 Car 的 equals() 方法是有意义的。

【讨论】:

  • “汽车的等于方法”是什么意思?我不是很明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多