Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组列表和泛型_Java_Generics_Arraylist - Fatal编程技术网

Java 数组列表和泛型

Java 数组列表和泛型,java,generics,arraylist,Java,Generics,Arraylist,我需要帮助回答以下问题: 定义一个名为StudentDatabaseArrayList的类,该类使用泛型类型T 必须实现可排序的,使用它来创建学生数据库。课程应包括以下内容: •用于保存实现可排序的某些类的对象的ArrayList •在适当位置插入新对象的方法insert(T newObject) 在ArrayList中,使ArrayList是一个排序列表,其中排序顺序为 由接口中的lessThan方法决定。例如,如果T是您要创建的类 在作业3中定义,这将创建一个学生列表,以便所有学生 谁是加拿

我需要帮助回答以下问题:

定义一个名为StudentDatabaseArrayList的类,该类使用泛型类型T 必须实现可排序的,使用它来创建学生数据库。课程应包括以下内容:

•用于保存实现可排序的某些类的对象的ArrayList

•在适当位置插入新对象的方法insert(T 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;
}
我在使用泛型为学生创建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> {