Java 在arraylist中查找特定元素的位置

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){

我有一个类“Student”。它存储学生姓名、年龄、标记等信息。我在arraylist中使用它。在这里我想知道具体学生的位置。有什么方法可以找到它,或者我必须使用“for”。请帮助我

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循环