java - 从链接列表中删除特定元素时遇到问题

标签 java linked-list

我被分配了一个任务,以链表的形式创建一个用 Java 编写的基于寄存器的小型程序。我首先创建一个学生类(class),然后为该类(class)创建一个测试人员文件。接下来,在注册表文件中,我列出了我的方法和构造函数,并且正在编写测试程序文件来测试我的所有方法。

但是,当我尝试从链接列表中删除特定元素时遇到麻烦,我希望能够删除学生,通过其个人的 StudentID 引用他们,但不知道如何执行此操作。

在尝试解决问题时,我遇到了 removeFirstOccurrence(Object o) 方法。这是正确的使用方法吗?

任何帮助将不胜感激。

学生文件代码:

public class Student {

private String foreName;
private String surName;
private int studentID;

//declaring the variables needed for my student


public Student (String foreName, String surName, int studentID)
{
    this.foreName = foreName;
    this.surName = surName;
    this.studentID = studentID;
}
//constructor to set out what a student needs



public String getForeName() {
    return foreName;
}

public String getSurName() {
    return surName;
}

public int getStudentID() {
    return studentID;
}

public void setForeName(String foreName) {
    this.foreName = foreName;
}

public void setSurName(String surName) {
    this.surName = surName;
}

public void setStudentID(int studentID) {
    this.studentID = studentID;
}

// getters and setters for my variables

public String toString ()
{

    return getClass().getName() + "foreName = " + foreName + "surName = " + surName + "studentID = " + studentID;
}
//my toString method

}

注册表文件代码:

import java.util.*;
public class Registry {


LinkedList<String> studentList
        = new LinkedList<String>();
//setting my type parameter


public Registry() {}
//empty constructor to hold arguements

public void addStudent(String aStudent)
{
    this.studentList.addLast(aStudent);
}



public void deleteStudent(int studentID) 
{
    //????         
}


@Override public String toString()
{
  return "Registry";
}



public String format()
{
}

注册表测试器文件代码:

import java.util.*;

public class RegistryTester {
public static void main (String[] args)
{
    LinkedList<String> studentList
            = new LinkedList<String>();




    System.out.println("Test 1");
    System.out.println("Methods tested: addStudent, constructor");
    System.out.println("********************");

    studentList.add("Joe Perkins 123");        
    studentList.addLast("Shilpa Gupta 1234");
    studentList.addLast("Seany Ray 12345");
    // adding 3 students to my list

    System.out.println(studentList);

}

}

最佳答案

  1. List定义为StudentList

    LinkedList<Student> studentList = new LinkedList<Student>();
    
  2. 重写 Student 类中的 hashCode()equals() 方法。

    public boolean equals(Object obj) {
       if (obj instanceof Student) {
         return studentID == ((Student)obj).getStudentID();
       }
      return false;
    }
    
    public int hashCode() {
       return studentID;
    }
    
  3. 定义方法:

    public void addStudent(Student aStudent)
    {
         this.studentList.addLast(aStudent);
    }
    
    
    
    public void deleteStudent(Student astudent) 
    {
        this.studentList.remove(aStudent)       
    }
    

关于java - 从链接列表中删除特定元素时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106761/

相关文章:

java - 从手机号码中提取国家代码

java - 打印链表中的所有节点

Java - 类型对象的链表的链表

java - Servlet 中的 IllegalStateException

java - 尝试理解基本的 WordCount MapReduce 示例

Java 多捕获/重新抛出

algorithm - 链表在恒定时间内跟踪最小值?

c - 在C中递归删除单链表

java - 链表插入节点后

java - 从 java 设置 MySql 连接的问题