详解java中List中set方法和add方法的区别

 更新时间:2022年08月10日 12:05:41   作者:有梦想的攻城狮  
本文主要介绍了详解java中List中set方法和add方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

在Java中的常用的集合接口List中有两个非常相似的方法:

E set(int index, E element);

void add(int index, E element);

这两个方法都是在集合的指定位置插入指定的元素,那么这两个方法到底有什么区别呢?接下来我们通过ArrayList这个我们常用集合实现来看一下这两个方法的差异

相同点

首先我们来看一下这两个方法在ArrayList中的相同点

他们都会在集合的指定位置插入新的元素,例如下面的例子:

#在集合的第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]
  • 上述两个方法中的element都不允许为null,如果为null的话会抛出NullPointerException
  • 上述两个方法中的element对应的类如果无法存入该集合,都会抛出ClassCastException异常
  • 上述两个方法中的element对应的类型如果无法存入该集合,都会抛出IllegalArgumentException异常

不同点

第一个不同点从上面的例子就可以看出来,add 方法是在指定位置插入新的值,然后将原先位置的元素
和原先位置之后的所有元素都向后移动了一位,而 set 方法是直接覆盖了原来的元素

#在集合的第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 方法对于index的取值范围是 0<= index <= size(),也就是说add方法可以在当前集合的最后一个元素后面再添加一个新元素;set 方法对于index的取值范围是 0< index < size(),也就是说set方法只能覆盖当前已有的元素,取值范围不能超出当前集合元素的范围

#通过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 

总结

通过总结List接口中上述两个非常相似的常用方法的相同点与不同点,使我们在日常工作中可以更加得心应手的去使用这些常用的集合类

到此这篇关于详解java中List中set方法和add方法的区别的文章就介绍到这了,更多相关java中List中set和add区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)

    Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)

    这篇文章主要介绍了Java安全框架——Shiro的使用详解,帮助大家更好的理解和学习使用Shiro,感兴趣的朋友可以了解下
    2021-04-04
  • Java开发实现的Socket双向通信功能示例

    Java开发实现的Socket双向通信功能示例

    这篇文章主要介绍了Java开发实现的Socket双向通信功能,结合实例形式分析了java基于socket实现的服务器端与客户端双向通信相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • SpringBoot中调用通用URL的实现

    SpringBoot中调用通用URL的实现

    在 Spring Boot 应用程序中,有时候我们需要调用一些通用的 URL 接口,本文主要介绍了SpringBoot中调用通用URL的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 解决springboot文件上传提示临时文件夹不存在问题

    解决springboot文件上传提示临时文件夹不存在问题

    这篇文章主要介绍了解决springboot文件上传提示临时文件夹不存在问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Spring中的ApplicationContext与BeanFactory详解

    Spring中的ApplicationContext与BeanFactory详解

    这篇文章主要介绍了Spring中的ApplicationContext与BeanFactory详解,Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类,事实上, Spring提供了两种不同的容器,一种是最基本的BeanFactory,另一种是扩展的ApplicationContext,需要的朋友可以参考下
    2024-01-01
  • java log is判断引发的一系列事件解析

    java log is判断引发的一系列事件解析

    这篇文章主要为大家介绍了java log is判断引发的一系列事件解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • springboot构造树形结构数据并查询的方法

    springboot构造树形结构数据并查询的方法

    本文主要介绍了springboot怎样构造树形结构数据并查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java中的单向链表详解

    Java中的单向链表详解

    这篇文章主要介绍了Java中的单向链表详解,单向链表又叫单链表,是链表的一种,由节点构成,head指针指向第一个称为表头节点,而终止指向最后一个null指针,需要的朋友可以参考下
    2024-01-01
  • 关于Java Object你真的了解了吗

    关于Java Object你真的了解了吗

    下面小编就为大家带来一篇关于Java Object你真的了解了吗。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • SpringBoot+ShardingSphereJDBC实现读写分离详情

    SpringBoot+ShardingSphereJDBC实现读写分离详情

    这篇文章主要介绍了SpringBoot+ShardingSphereJDBC实现读写分离详情,通过用​​MySQL​​进行一主一从的主从复制展开全文内容,需要的朋友可以参考一下
    2022-08-08

最新评论