前言
在java中的常用的集合接口list中有两个非常相似的方法:
E set(int index, E element);
void add(int index, E element);
这两个方法都是在集合的指定位置插入指定的元素,那么这两个方法到底有什么区别呢?接下来我们通过ArrayList这个我们常用集合实现来看一下这两个方法的差异
相同点
首先我们来看一下这两个方法在ArrayList中的相同点
立即学习“Java免费学习笔记(深入)”;
他们都会在集合的指定位置插入新的元素,例如下面的例子:
家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l
#在集合的第2位插入一个 F # 通过add方法插入 Listlist = new ArrayList (); 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 list = new ArrayList (); 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方法插入 Listlist = new ArrayList (); 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 list = new ArrayList (); 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
#通过add在当前集合的第四个位置插入F Listlist = new ArrayList (); 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 list = new ArrayList (); list.add("A"); list.add("B"); list.add("C"); System.out.println(list); list.set(3, "F"); System.out.println(list); #运行结果: 抛出NullPointerException










