在Java中创建2D动态列表

时间:2017-12-13 00:07:55

标签: java arraylist

我正在尝试在Java中实现2D动态列表,以存储给定Student和Week对象的Course对象列表。

沿线的东西, List<List<List<Course>>> listOfCoursesInWeekForStudent = new ArrayList<List<List<Course>>>();

您能否告诉我如何创建这样的结构,并对其执行简单的操作,包括添加和获取。

谢谢

1 个答案:

答案 0 :(得分:0)

  

您能否告诉我如何创建这样的结构,并对其执行简单的操作,包括addget

数据结构为List<List<List<Course>>>,因此List包含List<List<Course>>类型的元素。

您使用以下方式创建它,就像使用:

一样
List<List<List<Course>>> listOfListOfListOfCourses = new ArrayList<>();

添加和获取元素照常工作,请记住元素的类型为List<List<Course>>

List<List<Course>> element = ...
// Add element
listOfListOfListOfCourses.add(element);
// Get index of element
int index = listOfListOfListOfCourses.get(element);

但是,您可能已经注意到,数据结构复杂。我确信在您的确切上下文中有一个更合适的数据结构。很遗憾,您没有提供有关特定任务的其他信息。您可以提供并发表评论。

实施例

让我们尝试创建一个简单的示例,以了解如何使用这样的数据结构。因此

List<Course>             // All courses of one semester
List<List<Course>>       // All semesters of one university
List<List<List<Course>>> // All universities of one country

在这个具体的例子中,您可以轻松地看到,如果您创建一些小的包装类,那将会很有帮助

public class Semester {
    private List<Course> mCourses;

    public Semester(List<Course> courses) {
        this.mCourses = courses;
    }

    public List<Course> getCourses() {
        return this.mCourses;
    }
}

public class University {
    private List<Semester> mSemesters;

    public University(List<Semester> semesters) {
        this.mSemesters = semesters;
    }

    public List<Semester> getSemesters() {
        return this.mSemesters;
    }
}

使用此数据结构分解为

List<University> // Universities of one country

更容易阅读和理解。