Java 数组列表和泛型
我需要帮助回答以下问题: 定义一个名为StudentDatabaseArrayList的类,该类使用泛型类型T 必须实现可排序的,使用它来创建学生数据库。课程应包括以下内容: •用于保存实现可排序的某些类的对象的ArrayList •在适当位置插入新对象的方法insert(T newObject) 在ArrayList中,使ArrayList是一个排序列表,其中排序顺序为 由接口中的lessThan方法决定。例如,如果T是您要创建的类 在作业3中定义,这将创建一个学生列表,以便所有学生 谁是加拿大的老年人最先出现。然后所有的加拿大普通学生 出现,随后是所有外国学生。在每个小组中,学生必须 根据他们的名字分类 •返回系统中所有学生的描述的toString()方法, 使用上述排序顺序 •方法retrieveStudentsInRange(T lowerLimit,T upperLimit),返回 所有处于下限和上限之间的学生的描述 我已经创建了学生班(学生、普通学生、外国学生、高年级学生) 以下是学生的长相:Java 数组列表和泛型,java,generics,arraylist,Java,Generics,Arraylist,我需要帮助回答以下问题: 定义一个名为StudentDatabaseArrayList的类,该类使用泛型类型T 必须实现可排序的,使用它来创建学生数据库。课程应包括以下内容: •用于保存实现可排序的某些类的对象的ArrayList •在适当位置插入新对象的方法insert(T newObject) 在ArrayList中,使ArrayList是一个排序列表,其中排序顺序为 由接口中的lessThan方法决定。例如,如果T是您要创建的类 在作业3中定义,这将创建一个学生列表,以便所有学生 谁是加拿
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;
}
我在使用泛型为学生创建insert方法时遇到了问题。如有任何提示/帮助,将不胜感激。
这是我目前拥有的阵列列表:
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);
}
}
}
import java.util.ArrayList;
类StudentDatabaseArrayList实现可排序{
私人ArrayList myList;
公共学生数据库ArrayList(){
myList=新的ArrayList();
}
公共无效插入(T newObject){
if(myList.isEmpty()){
添加(0,newObject);
}
对于(int i=0;i
您的界面可能与此类似
interface sortable<T>{
boolean lessThan(T anObject);
}
接口可排序{
布尔lessThan(T-anObject);
}
声明StudentDatabaseArrayList时,此行:
class StudentDatabaseArrayList<T> implements sortable {
class StudentDatabaseArrayList实现可排序{
应该是:
class StudentDatabaseArrayList<T extends sortable> {
class StudentDatabaseArrayList{
因为需要排序的是泛型类型T,而不是数据库本身
在insert方法中,这将意味着您不再需要以学生身份强制转换新对象-您将能够在任何泛型类型T的对象上访问lessThan方法,因为“T扩展了可排序”.我遇到了问题:哪个问题?为什么要插入对象几次?应该在第一个比要插入的学生大的学生之前插入一次。
class StudentDatabaseArrayList<T extends sortable> {