我被分配了一个任务,以链表的形式创建一个用 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);
}
}
最佳答案
将
List
定义为Student
的List
LinkedList<Student> studentList = new LinkedList<Student>();
重写
Student
类中的hashCode()
和equals()
方法。public boolean equals(Object obj) { if (obj instanceof Student) { return studentID == ((Student)obj).getStudentID(); } return false; } public int hashCode() { return studentID; }
定义方法:
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/