将类的实例添加到java中的Arraylist

时间:2010-04-20 12:04:31

标签: java arraylist

我有10个类电影的实例,我想添加到名为Catalogue1的Arraylist

在包含main方法的类中,我编写以下内容

 ArrayList catalogue1= new ArrayList ()

   //the class movie is defined in another class
    Movie movie1= new Movie ()
   Movie movie2= new Movie ()

 Catalogue.Add (1, movie1)

有什么问题?我应该在某个地方定义这个名为catalog的arraylist应该包含哪些对象?

提前谢谢

4 个答案:

答案 0 :(得分:1)

List<Movie> catalogue = new ArrayList<Movie>(10);
catalogue.add(movie1);
catalogue.add(movie2);
...
catalogue.add(movie10);

是你如何使用泛型。

另请注意,通常的做法是在声明时使用界面(List)而不是具体实现(ArrayList),以便稍后如果您确定LinkedList或者某些特殊的MovieList对于实际实施来说是可取的,那么你可以减少修复。

喔-HO:

此外,您所写的add将无效 - 它应该抛出IndexOutOfBoundsException。特殊List version of add要求在您添加位置之前已存在(或为0)位置。所以如果你想使用那个添加:

catalogue.add(0,movie10);
catalogue.add(0,movie9);
...
catalogue.add(0,movie1);

如果你想要1-10顺序。

答案 1 :(得分:1)

如果这是您的逐字代码,则有两个直接问题。首先,您的ArrayList变量是“catalogue1”,但您正在尝试将项目添加到“目录”,该项目不存在。其次,你在位置1添加一个项目,这将超出界限,因为arraylist是空的。所以我会更改代码(添加卡尔评论中提到的泛型:

ArrayList<Movie> catalogue1 = new ArrayList<Movie>();
Movie movie1= new Movie();
Movie movie2= new Movie();
catalogue1.add(movie1); //equivalently: catalogue.add(0, movie1);
catalogue1.add(movie2);

答案 2 :(得分:0)

这里有几个问题。首先,如果你需要在列表的开头添加,你需要在索引0处添加,而不是1.此外,如果你有JVM 1.5+,你应该使用泛型。

List catalogue = new ArrayList<Movie>();
..
...
catalogue.add(movie1);
catalogue.add(movie2);//or (0,movie2)

答案 3 :(得分:0)

您的代码中存在一些简单的拼写错误:

ArrayList catalogue1 = new ArrayList();
Movie movie1= new Movie();
Movie movie2= new Movie();
// Catalogue.Add (1, movie1)
catalogue1.add(movie1);
catalogue1.add(movie2);

从上面的代码中可以看出你遇到的两个问题:

  1. add() ArrayList方法以小写a开头,您使用大写A。 Java标识符区分大小写。
  2. 您在名为Catalogue的对象上调用add()方法,但您将 ArrayList 命名为catalogue1