Maison > Java > javaDidacticiel > Quelle est la différence entre la méthode set et la méthode add dans List en Java ?

Quelle est la différence entre la méthode set et la méthode add dans List en Java ?

王林
Libérer: 2023-04-19 19:49:29
avant
1483 Les gens l'ont consulté

Avant-propos

Il existe deux méthodes très similaires dans l'interface de collection couramment utilisée List en Java :

E set(int index, E element);E set(int index, E element);

void add(int index, E element);

void add(int index, E element);

Les deux méthodes insèrent des éléments spécifiés à des positions spécifiées dans la collection. Alors, quelle est la différence entre ces deux méthodes ? Ensuite, jetons un coup d'œil aux différences entre ces deux méthodes via ArrayList, notre implémentation de collection couramment utilisée

Les similitudes

Tout d'abord, jetons un coup d'œil aux similitudes entre ces deux méthodes dans ArrayList

Ils inséreront au spécifié position dans la collection Nouveaux éléments, tels que les exemples suivants :
    #在集合的第2位插入一个 F
    # 通过add方法插入
    List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
    
            list.add(2, "F");
            System.out.println(list);
            
    #运行结果:  [A, B, F, C]
    
    #通过set方法插入
    List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
    
            list.set(2, "F");
            System.out.println(list);
    #运行结果: [A, B, F]
    Copier après la connexion
    Copier après la connexion
  • L'élément dans les deux méthodes ci-dessus ne peut pas être nul S'il est nul, une NullPointerException sera levée
  • La classe correspondante de. l'élément dans les deux méthodes ci-dessus si Si la collection ne peut pas être stockée, une ClassCastException sera levée. Si le type correspondant à l'élément dans les deux méthodes ci-dessus ne peut pas être stocké dans la collection, une IllegalArgumentException sera levée. première différence Comme le montre l'exemple ci-dessus, la méthode add insère une nouvelle valeur à la position spécifiée, puis déplace l'élément
  • à la position d'origine et tous les éléments après la position d'origine d'une position vers l'arrière, tandis que la méthode set écrase directement l'original La plage de valeurs de l'élément
  • #在集合的第2位插入一个 F
    # 通过add方法插入
    List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
    
            list.add(2, "F");
            System.out.println(list);
            
    #运行结果:  [A, B, F, C]
    
    #通过set方法插入
    List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
    
            list.set(2, "F");
            System.out.println(list);
    #运行结果: [A, B, F]
    Copier après la connexion
    Copier après la connexion

    add méthode pour index est 0<= index <= size(), ce qui signifie que la méthode add peut ajouter un nouvel élément après le dernier élément de la collection actuelle ; pour index La plage de valeurs est 0< index < size(), ce qui signifie que la méthode set ne peut couvrir que les éléments existants actuels et que la plage de valeurs ne peut pas dépasser la plage des éléments définis actuellement

    #通过add在当前集合的第四个位置插入F
     List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
            list.add(3, "F");
            System.out.println(list);
            
    #运行结果: [A, B, C, F]
    
    #通过set在当前集合的第四个位置插入F
     List<String> list = new ArrayList<String>();
            list.add("A");
            list.add("B");
            list.add("C");
            System.out.println(list);
            list.set(3, "F");
            System.out.println(list);
            
    #运行结果: 抛出NullPointerException
    Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal