Différentes sorties lors de l'impression ArrayList en java

swapnil:

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
Michael Berry:

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 ArrayListobjet à la liste, et que votre ArrayListpeut 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 ArrayListsans 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.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=184990&siteId=1
conseillé
Classement