【问题标题】:Adding instances of a class to an Arraylist in java在java中将类的实例添加到Arraylist
【发布时间】:2010-04-20 12:04:30
【问题描述】:

我有 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 的数组列表应该包含什么样的对象?

提前谢谢你

【问题讨论】:

  • 您运行的是哪个版本的 JVM?如果大于 1.5,您可能应该使用泛型。
  • 你的问题是什么?它编译吗?显然不是,但你得到了什么信息?
  • 你的意思是 catalogue1.add(1,movie1) 我猜?大写字母 Catalog 表示一个类,Add 表示 .Net。您的数组列表是 catalogue1。

标签: java arraylist


【解决方案1】:

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

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】:
    List<Movie> catalogue = new ArrayList<Movie>(10);
    catalogue.add(movie1);
    catalogue.add(movie2);
    ...
    catalogue.add(movie10);
    

    你会如何使用泛型。

    还请注意,通常的做法是在声明时使用接口(@98​​7654323@)而不是具体实现(ArrayList),以便稍后如果您决定使用LinkedList 或者可能是一些特殊的@987654326 @ 对于实际实现更可取,那么您需要解决的问题就更少了。

    哦-HO:

    此外,您所写的add 不起作用 - 它应该抛出一个IndexOutOfBoundsException。特殊的List version of add 要求位置已经存在(或为 0),然后才能添加到那里。因此,如果您想使用该添加:

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

    如果您希望它们按 1-10 的顺序排列。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2013-11-12
          • 1970-01-01
          • 2012-03-16
          • 1970-01-01
          • 2016-01-29
          • 2013-05-19
          • 1970-01-01
          • 2013-10-29
          • 2017-03-11
          相关资源
          最近更新 更多