2010-04-20 4 views
0

J'ai 10 instances du film de classe que je veux ajouter à un Arraylist nommé Catalogue1Ajout d'instances d'une classe à une Arraylist en java

dans une classe contenant une méthode principale que j'ÉCRIRE

ArrayList catalogue1= new ArrayList() 

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

Catalogue.Add (1, movie1) 

Qu'est-ce qui ne va pas? Devrais-je définir quelque part quel genre d'objets ce catalogue nommé arraylist devrait contenir?

Nous vous remercions à l'avance

+0

quelle version de la JVM exécutez-vous? Si c'est> 1.5, vous devriez probablement utiliser des génériques. – Carl

+2

Quel est votre problème? compile-t-il?évidemment pas, mais quel message obtenez-vous? – pgras

+0

Vous voulez dire catalogue1.add (1, film1) je suppose? Le catalogue de la lettre captitive suggère une classe, et l'Add suggère .Net. Votre arraylist est catalogue1. – extraneon

Répondre

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

comment vous le feriez avec les génériques.

Notez également que la pratique générale consiste à utiliser l'interface (List) au lieu de la mise en œuvre concrète (ArrayList) lors de la déclaration, de sorte que plus tard si vous décidez qu'un LinkedList ou peut-être une MovieList spéciale est préférable pour la mise en œuvre effective alors vous avez moins à réparer.

Oh-HO:

En outre, votre add comme écrit ne fonctionnera pas - il devrait jeter un IndexOutOfBoundsException. Le spécial exige qu'une position existe déjà (ou est 0) avant de pouvoir y ajouter. Donc, si vous voulez utiliser cette ajouter:

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

si vous les voulez dans l'ordre 1-10.

0

Il y a plusieurs problèmes ici. Tout d'abord, si vous devez ajouter au début de la liste, vous devez ajouter à l'index 0, et non 1. De plus, si vous avez JVM 1.5+, vous devriez utiliser des génériques.

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

Si c'est votre code verbatim il y a deux problèmes immédiats. D'abord votre variable ArrayList est "catalogue1" mais vous essayez d'ajouter un élément à "Catalogue", qui n'existe pas. Deuxièmement, vous ajoutez un objet à la position 1, qui serait hors limites, puisque l'arrayliste est vide. Donc, je changerais le code (ajoutant génériques comme mentionné par le commentaire de 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); 
0

Il y a quelques simples fautes de frappe dans votre code:

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

Comme vous pouvez le voir dans le code ci-dessus les deux les problèmes que vous aviez sont:

  1. La méthode add() de ArrayList commence par un minuscule a et vous avez utilisé une majuscule A. Les identifiants Java sont sensibles à la casse.
  2. vous appeliez la méthode add() sur un objet nommé: Catalogue mais vous avez nommé votre ArrayList: catalogue1.
Questions connexes