array list get/set:遍历数组查找equals的对象并返回index
时间: 2024-01-10 15:02:18 浏览: 234
可以使用Java中的ArrayList类来实现遍历数组查找equals的对象并返回index的功能。ArrayList类提供了get()和set()方法,可以通过索引访问和修改元素。
以下是一个示例代码:
```java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// 创建一个包含Person对象的ArrayList
ArrayList<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 25));
persons.add(new Person("Bob", 30));
persons.add(new Person("Charlie", 35));
persons.add(new Person("David", 40));
// 查找名字为"Bob"的Person对象,并返回其在列表中的位置
int index = findIndex(persons, new Person("Bob", 30));
System.out.println("Index of Bob: " + index);
// 将名字为"David"的Person对象修改为年龄为50
int davidIndex = findIndex(persons, new Person("David", 40));
persons.set(davidIndex, new Person("David", 50));
// 输出修改后的列表
System.out.println(persons);
}
/**
* 遍历ArrayList查找equals的对象并返回其在列表中的位置
*
* @param list ArrayList
* @param obj 要查找的对象
* @param <T> 对象类型
* @return 对象在列表中的位置,如果未找到返回-1
*/
public static <T> int findIndex(ArrayList<T> list, T obj) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(obj)) {
return i;
}
}
return -1;
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person other = (Person) obj;
return this.name.equals(other.name) && this.age == other.age;
}
return false;
}
public String toString() {
return "Person{name=" + name + ",age=" + age + "}";
}
}
```
在上面的例子中,我们创建了一个包含Person对象的ArrayList,并使用findIndex()方法查找名字为"Bob"的Person对象的位置。由于Person类重写了equals()方法,所以可以使用ArrayList的get()方法遍历列表并比较每个元素是否与目标对象相等。如果找到了相等的对象,就返回其在列表中的位置;否则返回-1。接着,我们使用set()方法将名字为"David"的Person对象的年龄修改为50,并输出修改后的列表。
阅读全文