Java 在arraylist中查找特定元素的位置
我有一个类“Student”。它存储学生姓名、年龄、标记等信息。我在arraylist中使用它。在这里我想知道具体学生的位置。有什么方法可以找到它,或者我必须使用“for”。请帮助我Java 在arraylist中查找特定元素的位置,java,arraylist,Java,Arraylist,我有一个类“Student”。它存储学生姓名、年龄、标记等信息。我在arraylist中使用它。在这里我想知道具体学生的位置。有什么方法可以找到它,或者我必须使用“for”。请帮助我 Class student{ String name; Int age; Int mark1; Int mark2; Public class student(String name,Int age, Int mark1, Int mark2){
Class student{
String name;
Int age;
Int mark1;
Int mark2;
Public class student(String name,Int age, Int mark1, Int mark2){
this.name=name;
...
...
}
}
In the main function {
Arraylist<student> ar=new Arraylist<student>();
//Added some students detail using add method //
班级学生{
字符串名;
智力年龄;
Int-mark1;
Int-mark2;
公共类学生(字符串名称、整数年龄、整数标记1、整数标记2){
this.name=name;
...
...
}
}
在主要功能中{
Arraylist ar=新的Arraylist();
//使用add方法添加了一些学生的详细信息//
然后我必须用学生的名字找到他的位置。Java列表接口 int indexOf(对象o) 返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1 但这需要您传入一个要搜索的学生对象 因此:您必须以某种方式迭代列表,并“手动”进行比较
当然,有很多不同的方法可以做到这一点。例如,使用streams,您可能能够编写非常简洁的代码来做到这一点。但是对于新手,只需一步一步地进行。首先执行普通的for循环,然后尝试“for each”版本,然后查看流。您可以使用前面提到的
列表
界面中定义的indexOf
方法。
其签名如下:
int indexOf(Object o);
但是您需要在学生
类中重写对象
类的equals
和hashCode
方法,以使用indexOf
例如在
class Student {
//... fields, methods and constructors, you already defined
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
mark1 == student.mark1 &&
mark2 == student.mark2 &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age, mark1, mark2);
}
}
看。这回答了你的问题吗?Indexof需要一个对象。该对象应该包含名称、年龄、标记1、标记2,还是只包含一个名称就足够了?因为我在问如果我只包含学生名称会怎么样。谢谢,我将尝试使用For循环