不能在ArrayList中使用对象的toString()方法

时间:2013-04-21 18:55:55

标签: java arrays multidimensional-array arraylist

我正在尝试使用toString()内对象的ArrayList方法,而是打印内存地址而不是预期值。我将课程翻译成英语,对不起,如果我忘记了什么,只要你不明白就去追求。 让我们看看我的代码:

日程安排课程(我压抑了吸气剂和制定者):

static Professor professor;
static Room room;
static Classroom classroom;

public String toString() {
        return "Schedule [getProfessor()=" + getProfessor() + ", getRoom()="
                + getRoom() + ", getClassRoom()=" + getClassRoom() + ", getClass()=" + getClass() + ", hashCode()="
                + hashCode() + ", toString()=" + super.toString() + "]";
}

学校

ArrayList<Professor> professor = new ArrayList<Professor>();
ArrayList<Room> room = new ArrayList<Room>();
ArrayList<Classroom> classroom = new ArrayList<Classroom>(); 
public ArrayList<Schedule[][]> sched = new ArrayList<Schedule[][]>();

我正在使用遗传算法(目前我正在了解它,所以,我不知道很多),这是我的“人口生成器”:

人口

public static void generatePopulation(School school){

        // Shuffle the arraylist for generate a random population
        Collections.shuffle(school.getProfessor());
        Collections.shuffle(school.getClassroom());
        Collections.shuffle(school.getRoom());

        Schedule[][] sched1 = new Schedule[1][1];

        // Generate population (just a little test to see if it works)
        sched1[0][0].addEverything(school.getProfessor().get(0), school.getClassroom().get(0), school.getRoom().get(0));
        school.sched.add(sched);

主要

 (... school and associations created ...)
    Population.generatePopulation(school);
    System.out.println(school.getSched().isEmpty()); // it returns false, that is, isn't empty
    System.out.println(school.getSched().get(0).toString()); 
    // returns "[[Lentidades.Schedule;@40914272" (entidades = name of my package)

那么,为什么我会收到记忆位置而不是预期值呢? 我想我没有忘记任何事情,但如果你在这段代码中看到一些奇怪的东西,只需发一个问题,我就会解释/粘贴剩下的代码。

1 个答案:

答案 0 :(得分:6)

您收到的array Schedule,因此从未使用过您的toString()方法。

查看[[输出的[[Lentidades.Schedule;@40914272部分,这会告诉您正在打印一个二维array

正如@JonSkeet和@MarounMaroun所指出的,打印arrays的一种简单方法是将Arrays.toString()用于一维arrays,或Arrays.deepToString()用于多维