要获取包含自定义对象的ArrayList行的索引,可以使用以下方法:
equals()
方法和hashCode()
方法,以确保对象之间的比较是基于其内容而不是引用。public class CustomObject {
private String name;
private int age;
// 构造函数、getter和setter方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CustomObject that = (CustomObject) o;
return age == that.age && Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
ArrayList list = new ArrayList<>();
list.add(new CustomObject("John", 25));
list.add(new CustomObject("Jane", 30));
list.add(new CustomObject("Tom", 35));
indexOf()
方法来查找包含特定自定义对象的行的索引。CustomObject object = new CustomObject("Jane", 30);
int index = list.indexOf(object);
System.out.println("Index: " + index);
完整示例代码如下:
import java.util.ArrayList;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(new CustomObject("John", 25));
list.add(new CustomObject("Jane", 30));
list.add(new CustomObject("Tom", 35));
CustomObject object = new CustomObject("Jane", 30);
int index = list.indexOf(object);
System.out.println("Index: " + index);
}
}
class CustomObject {
private String name;
private int age;
public CustomObject(String name, int age) {
this.name = name;
this.age = age;
}
// getter and setter methods
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CustomObject that = (CustomObject) o;
return age == that.age && Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
运行上述代码,将输出:
Index: 1
这表示自定义对象"Jane"(年龄为30)在ArrayList中的索引为1。