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

0kjbasz6  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(366)

我有一个类“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 //

然后我要用他的名字找到一个学生的位置。

mitkmikd

mitkmikd1#

你可以用 indexOf 中定义的方法 List<T> 前面提到的接口。其特征如下:

int indexOf(Object o);

但你需要覆盖 equals 以及 hashCode 方法 Object 你的班级 Student 要使用的类 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);
  }
}
fwzugrvs

fwzugrvs2#

java列表接口
int indexof(对象o)
返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。
但这需要你传入一个学生对象来搜索。
因此:您必须以某种方式迭代列表,并“手动”进行比较。
当然,有很多不同的方法可以做到这一点。例如,使用流,您可能能够编写非常简洁的代码来实现这一点。但对于新手来说,一步一步走。首先执行普通for循环,然后尝试“for each”版本,然后查看流。

相关问题