list中add、set方法详解

Java中线性表List接口的插入方法有三大类,add、addAll和set,他们之间到底有什么区别呢,我们一一来看

一、add方法,有2种重载方法

1、boolean  add(E element):用于向集合的末尾插入新的元素,是List接口中最常用的插入方法

List list = new ArrayList();
 list.add("小汪");
 list.add("小王");
 list.add("小旺");
			  
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}			  

list中add、set方法详解_第1张图片

2、void  add(int index, E element):可以在插入操作过程中指定插入的位置【下标从0开始】

List addlist = new ArrayList();
 addlist.add(0,"小写"); 
 addlist.add(1,"小谢"); 
 addlist.add(2,"小鞋");  
			  
for (int i = 0; i < addlist.size(); i++) {
    System.out.println(addlist.get(i));
}  

list中add、set方法详解_第2张图片

(1)当前要插入的位置已存在时,会自动将当前位置及之后的元素全部后移进行插入

List addList = new ArrayList();
addList.add(0,"小刘");//默认第一个
addList.add(0,"小六");//新加入已有位置元素时,原位置及后面所有元素后移【小六  变成下标为零的元素,原 小刘后移,其余元素紧跟】
addList.add(1,"小柳");  
			  
for (int i = 0; i < addList.size(); i++) {
	System.out.println(addList.get(i));
} 			  

list中add、set方法详解_第3张图片

(2)参数index的值不能大于当前list的容量,即下标必须从0开始

List addList = new ArrayList();
addList.add(2,"小刘"); 
addList.add(0,"小六"); 
addList.add(1,"小柳");  
			  
for (int i = 0; i < addList.size(); i++) {
    System.out.println(addList.get(i));
} 

list中add、set方法详解_第4张图片

(3)由于ArrayList对象初始化时不包含任何元素,因此size的值为依旧为0,所以,即使在创建list对象时指定了初始化大小,也不可以从任意下标插入(无论是否初始化大小,下标必须从0开始

List addsize = new ArrayList(5);
   addsize.add(2,"小数"); 
   addsize.add(4,"小树"); 
   addsize.add(1,"小叔");   
 			  
for (int i = 0; i < addsize.size(); i++) {
    System.out.println(addsize.get(i));
} 

list中add、set方法详解_第5张图片

二、addAll方法,有2种重载方法

1、 boolean addAll(Collection c:在集合末尾可以一次性插入一个集合

List list = new ArrayList();
   list.add("小汪");
   list.add("小王");
   list.add("小旺");
   list.add("");
   list.add(null);
			  
List listObj = new ArrayList();
	listObj.addAll(list); 
			  
for (int i = 0; i < listObj.size(); i++) {
	System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
 } 

list中add、set方法详解_第6张图片

可以插入空的集合,但不能直接插入null

List list = new ArrayList();
   list.add("小汪");
   list.add("小王");
   list.add("小旺");
   list.add("");
   list.add(null);

List lista = new ArrayList();
			  
List listObj = new ArrayList();
   listObj.addAll(list); 
   listObj.addAll(lista); 
   listObj.addAll(null); 
			  
for (int i = 0; i < listObj.size(); i++) {
   System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
} 

list中add、set方法详解_第7张图片
2、boolean addAll(int index, Collection c):可以在原集合的指定位置一次性插入一个新集合

List list = new ArrayList();
   list.add("小汪"); //0
   list.add("小王"); //1
   list.add("小旺"); //2
   List lista = new ArrayList();
			  
List indexList = new ArrayList();
   indexList.add("小哈");
   indexList.add("小蛤");
   indexList.add("小铪");
			  
List listObj = new ArrayList(20);
   listObj.addAll(0,list); //0 1 2 
   listObj.addAll(1,lista);//不算数
   listObj.addAll(3,indexList); 
			  
for (int i = 0; i < listObj.size(); i++) {
   System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
} 

(1)跟add(E element)方法类似:当前要插入的位置已存在时,会自动将当前位置及之后的元素全部后移进行插入

list中add、set方法详解_第8张图片

(2)插入的空集合是不算数的

list中add、set方法详解_第9张图片

list中add、set方法详解_第10张图片

(3)下标规则与add(int index, E element)方法一致,无论是否初始化大小,只能插入已存在且合法的下标

list中add、set方法详解_第11张图片

三、set(int index,E element):实际上是一种替换操作

List list = new ArrayList();
   list.add("小汪"); //0
   list.add("小王"); //1
   list.add("小旺"); //2
			  
   list.set(2,"哇哈哈");  
			  
for (int i = 0; i < list.size(); i++) {
   System.out.println(list.indexOf(list.get(i))+"----"+list.get(i));
} 

list中add、set方法详解_第12张图片

 要设置某个位置上的元素,这个位置必须已存在,否则会抛出异常

list中add、set方法详解_第13张图片

list集合的移除方法

 

你可能感兴趣的:(Java,list中add方法详解,集合中add带下标与否的区别,list中add和set的区别,add与addAll的区别,add,addAll,set)