我有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应该包含哪些对象?
提前谢谢
答案 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);
从上面的代码中可以看出你遇到的两个问题: