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 ?

王林
王林avant
2023-04-19 19:49:291526parcourir

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]
  • 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]

    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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer