Passez en revue 2 dernières lignes des deux sorties pourquoi différentes? Je suis satisfait avec le programme 1
programme 1
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
System.out.println(al);
System.out.println("-----------------------------------");
al.addAll(2, al);
System.out.println("-----------------------------------");
System.out.println(al);
System.out.println(al.get(2).getClass());
}
Output :
[10, 20, 30]
-----------------------------------
-----------------------------------
**[10, 20, 10, 20, 30, 30]
class java.lang.Integer**
Je ne suis pas satisfait avec le programme 2 sortie Pourquoi une sortie différente lors de l'impression arraylist? pourquoi « java.util.ArrayList » est la dernière ligne de sortie pour prog 2 mais « java.lang.Integer » pour prog1
programme 2
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
System.out.println(al);
System.out.println("-----------------------------------");
al.add(2,al);
al.add(8);
al.add(2);
al.add(4);
al.add(1);
System.out.println("-----------------------------------");
System.out.println(al);
System.out.println(al.get(2).getClass());
}
Output :
[10, 20, 30]
-----------------------------------
-----------------------------------
[10, 20, (this Collection), 30, 8, 2, 4, 1]
class java.util.ArrayList
Au lieu de al.add(2, al);
, vous voulez certainement al.addAll(2, al);
, ce qui ajoutera le contenu de al
(tel qu'il est avant cet appel de méthode est complète) à al
.
À l' heure actuelle, vous êtes juste ajouter un ArrayList
objet à la liste, et que votre ArrayList
peut contenir une vieille chose en raison du manque de paramètres génériques (pas souhaitable!), Cette compile , et fonctionne très bien.
Vous êtes en cours d' exécution dans cette question parce que vous utilisez un générique ArrayList
sans aucun paramètre générique. Si vous utilisez explicitement ArrayList<Integer>
, alors que la ligne telle qu'elle est ne compilerait pas. L' utilisation sans ces paramètres est uniquement pris en charge pour l' héritage, en arrière des raisons de compatibilité, et doit être évitée.