调用 arraylist 的 indexof(object o) 方法即可获取元素在列表中的索引位置。该方法会遍历列表,使用 equals() 方法比对传入的对象,找到第一个匹配项后返回其从零开始的索引值;若列表中不存在该对象或传入值为 null,则返回 -1。

如何查找特定字符串在列表中的位置
针对包含字符串的列表,直接传入目标字符串字面量或变量给 indexOf 方法即可完成查找。由于 String 类重写了 equals() 方法,该方法能准确识别内容相同的字符串,无需担心引用地址不同导致的误判。如果列表中存在重复元素,它只会返回最先出现的那个元素的索引。

import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<string> list = new ArrayList();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
int index = list.indexOf("Banana");
System.out.println(index); // 输出 1
}
}</string>
如何查找自定义对象在列表中的位置
当列表存储的是自定义类的实例时,indexOf 依然有效,但前提是必须在该自定义类中正确重写 equals() 和 hashCode() 方法。如果不重写 equals(),默认继承自 Object 的引用比较会导致即使两个对象内容完全一致,indexOf 也会认为它们不相等并返回 -1。因此,实现基于业务逻辑的属性比较是成功查找的关键。

import java.util.ArrayList;
import java.util.List;
class User {
String name;
int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
User user = (User) obj;
return age == user.age && name.equals(user.name);
}
}
public class Main {
public static void main(String[] args) {
List<user> users = new ArrayList();
users.add(new User("Alice", 25));
users.add(new User("Bob", 30));
User target = new User("Alice", 25);
int index = users.indexOf(target);
System.out.println(index); // 输出 0
}
}</user>
当列表中不存在目标元素时 indexOf 返回什么
如果在遍历完整个列表后仍未找到与指定对象相等的元素,indexOf 方法将返回 -1。这一行为同样适用于传入 null 作为参数的情况:如果列表中包含 null 元素,它会返回第一个 null 的索引;如果列表中完全没有 null,则返回 -1。开发者通常利用这个返回值进行条件判断,以决定后续是执行删除操作还是抛出异常。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











