【发布时间】:2015-07-31 20:26:24
【问题描述】:
我需要帮助解决以下问题:
定义一个名为 StudentDatabaseArrayList 的类,它使用泛型类型 T 必须实现 Sortable 的人使用它来创建学生数据库。该类应包括以下内容:
• 一个 ArrayList,用于保存某些实现 Sortable 的类的对象。
• 一个方法 insert(T newObject) 在适当的位置插入一个 newObject 在 ArrayList 中,使得 ArrayList 是一个排序列表,其中排序顺序为 由接口中的方法lessThan决定。例如,如果 T 是你的类 在作业 3 中定义,这将创建一个学生列表,这样所有学生 加拿大老年人首先出现。然后所有的加拿大普通学生 出现,紧随其后的是所有外国学生。在每个小组中,学生必须 按名称排序。
• 一个 toString() 方法,它返回系统中所有学生的描述, 使用上述排序顺序。
• 一个方法 retrieveStudentsInRange(T lowerLimit, T upperLimit),它返回 描述所有介于下限和上限之间的学生。
我已经创建了学生类(学生、普通学生、外国学生、高年级学生) 这是学生的样子:
public abstract class Student implements sortable {
private int studentNumber;
private String studentName;
private Course courses[];
private Student bestFriend;
private int numCourses;
private int takenNum;
private static int num = 1;
public Student(String studentName, int maxNum) {
this.studentName = studentName;
courses = new Course[maxNum];
numCourses = maxNum;
studentNumber = num;
num++;
takenNum = 0;
bestFriend = null;
}
public Student(String studentName) {
this(studentName, 4);
}
public String getName() {
return studentName;
}
public abstract double computeFees();
public abstract String findCountry();
public int getTakenNum() {
return takenNum;
}
public boolean insertCourse(Course aCourse) {
for (int i = 0; i < takenNum; i++) {
if (aCourse.courseCodeMatches(courses[i]))
return false;
}
if (takenNum < numCourses || numCourses == 0) {
courses[takenNum] = aCourse;
takenNum++;
return true;
}
return false;
}
public void setBestFriend(Student aStudent) {
bestFriend = aStudent;
}
public boolean bothFriends() {
if (this.studentName.equals(bestFriend.bestFriend.studentName))
return true;
return false;
}
public String toString() {
String info = ("student # " + this.studentNumber + ", Name = " + this.studentName);
if (this.bestFriend != null)
info = info + ", best friend = " + this.bestFriend.studentName;
int i = 0;
while (i < this.takenNum) {
info = info + "\n Course " + (i + 1) + ": " + this.courses[i];
i++;
}
info = info + " \n pays fees: $" + computeFees() + " and is from " + findCountry() + "\n ";
return info;
}
Sortable 看起来像这样:
interface sortable{
boolean lessThan(sortable anObject);
}
我在使用泛型为学生创建插入方法时遇到问题,任何提示/帮助将不胜感激。 这是我目前拥有的数组列表:
import java.util.ArrayList;
class StudentDatabaseArrayList<T> implements sortable {
private ArrayList<T> myList;
public StudentDatabaseArrayList() {
myList = new ArrayList<T>();
}
public void insert(T newObject) {
if (myList.isEmpty()) {
myList.add(0, newObject);
}
for (int i = 0; i < myList.size()-1; i++) {
Student compare = (Student)myList.get(i);
Student wantToAdd = (Student) newObject;
while (compare.lessThan(wantToAdd)) {
myList.add(i, newObject);
}
}
}
【问题讨论】:
-
我遇到了麻烦:哪个麻烦?为什么要多次插入对象?您应该在比要插入的学生大的 first 学生之前插入一次。