ArrayList中的ArrayList - 无法访问值

时间:2012-12-02 04:30:39

标签: java multidimensional-array arraylist

所以这是我的方法:

public static ArrayList collectSchedule(ArrayList schedule, ArrayList list, int counter)
{
    ((ArrayList) list.get(counter)).add(schedule);
    System.out.println(list);
    return list;
}
public static ArrayList getClassInfo(int count)
{
    Scanner stdIn = new Scanner (System.in);
    String userInput;
    System.out.print("Enter the name of class #" + count + " : ");
    userInput = stdIn.nextLine();
    ArrayList x = getClassTime();
    x.add(0, userInput);
    x.add(1, getClassLength());
    x.add(2, getDayOfTheWeek());
    return x;
}

所以我从getClassInfo(这是一个ArrayList)取值“x”并将其输入方法collectSchedule以及一个数字(我想要它的索引)和另一个ArrayList(让我们称之为“schedule”) 。我将“x”(ArrayList)添加到ArrayList“schedule”。如果我打印出“x”,它将显示“schedule”的所有值。 (注意:我添加了多个不同的“x”实例来安排!)。因此,如果我将3个不同的“x”添加到“schedule”,它将分别打印出来([x,x,x] [x,x,x] [x,x,x])。我从“日程安排”中获得“x”的单一值时遇到了麻烦。

我认为这段代码可以正常工作但是在编译时它会给我一个错误。

public static void creation(ArrayList list)
{
    System.out.println((schedule.get(0)).x().get(1));
}

任何人都可以在我出错的地方帮助我吗? 我读了一些关于使用对象的东西?但不确定如何!

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您开始使用泛型,即List<List<String>> myList,您会发现使用集合更容易。另外,为什么不制作一些存储类型值的实际类而不是依赖索引列表呢?

除此之外......

System.out.println((schedule.get(0)).x().get(1));

如果计划的类型是ArrayList,则schedule.get(0)将返回Object类型的东西,除非您执行显式转换。由于Object没有方法x()会产生错误。您通常可以通过在一行中不包含如此多的链接函数调用来缩小这些内容。这样做很难分辨给定错误的含义。

如果时间表被声明为List<List<String>>甚至是List<List<Object>>,那么您就可以这样做:

List<String> classInfo = schedule.get(0);
String classLength = classInfo.get(1);
System.out.println(classLength);

认为是你实际上的目标