list中add、set方法详解_list.set_super_.的博客-程序员秘密

技术标签: Java  list中add方法详解  集合中add带下标与否的区别  list中add和set的区别  add与addAll的区别  add addAll set  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

List<String> lista = new ArrayList<String>();
			  
List<String> listObj = new ArrayList<String>();
   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));
} 


2、boolean addAll(int index, Collection<? extends E> c):可以在原集合的指定位置一次性插入一个新集合

List<String> list = new ArrayList<String>();
   list.add("小汪"); //0
   list.add("小王"); //1
   list.add("小旺"); //2
   List<String> lista = new ArrayList<String>();
			  
List<String> indexList = new ArrayList<String>();
   indexList.add("小哈");
   indexList.add("小蛤");
   indexList.add("小铪");
			  
List<String> listObj = new ArrayList<String>(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)方法类似:当前要插入的位置已存在时,会自动将当前位置及之后的元素全部后移进行插入

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

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

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

List<String> list = new ArrayList<String>();
   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集合的移除方法

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/super_DuoLa/article/details/109468502

智能推荐

查找与排序之二分法查找篇(C语言实现)_非线性混合整数规划 c#_RoadToGeek的博客-程序员秘密

相比线性查找,二分法查找则显得十分高效,其查找次数与总元素数量存在对数关系,即只要较少的查找次数就可以完成快速地搜索。下面实现二分法查找:原理:在进行二分法查找前需要先对数据进行排序(具体排序实现详见下一篇文章),定义left(数据集的开头),right(数据集结尾)两个变量,然后在这组数据中找到mid=(left+right)/2,然后将待查找元素与mid所指元素进行比较,如果相等将索引返回

L2-007. 家庭房产(并查集,变)_Bear1997的博客-程序员秘密

L2-007. 家庭房产时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行给出一个正整数N(&amp;lt;=1000),随后N行,每行按下列格式给出一个人的房产:编号 父 母 k 孩子1 ... 孩子k 房产套数 总面积其中 编号 是每个人独有...

Java中实现拷贝文件_梦想画家的博客-程序员秘密

Java中实现拷贝文件本文我们学习java中多种方式复制文件。首先使用标准IO和NIO2 api,然后利用第三方库实现。IO API首先,使用java.io api拷贝文件,需要打开流,循环遍历内容,写入另一个流:@Testpublic void givenIoAPI_whenCopied_thenCopyExistsWithSameContents() throws IOExce...

MPT(Merkle Patricia Tree)树结构示例_mpt树_乐观的阿锡的博客-程序员秘密

MPT(Merkle Patricia Tree):参考深入浅出以太坊MPT(Merkle Patricia Tree)MPT树结构示例1:rootHash扩展节点 prefix 0prefixshared nibblenext noderootHash16hashAhashA分支节点hashB006fhashDhashD分支节点hashE17hashFhashF分支节点hashG35coin

参加国际会议作(oral)的体验感_国际会议oral_NeverFears的博客-程序员秘密

做oral汇报就相当于一群听众静静的坐在下面左手端着咖啡,右手拿着点心,他们时而低头沉思,时而举头和你眼神对视,更或者突然之间奋笔疾书,狂敲键盘。他们可能有的并不太懂你在说些什么,但也要小心的是不能高兴的太早,这时总会有一些出来“捣乱”的未来学术界扛把子们,在Q&amp;A的时候抛给你一个刁钻的问题,让局面顿时陷入尴尬,当然,许多的听众们还是很和善、友好的。1.首先分会场主持人会介绍接下来汇报的是(某某),来自****,汇报的内容是**(当然对于这部分是否介绍就要取决于主持人了)。然后你就可以走上去开.

学习用python 使用PI实时数据库笔记_python连接pi数据库_yz_coolfish的博客-程序员秘密

1、API方式,调用piapi.dll用ctypes.CDLL调用,显示非WIN32应用。以为是.NET的动态库,改用pythonnet调用,竟然要安装32位的python

随便推点

SpringBoot连接MySql报错:The server time zone value '�й���׼ʱ��' 和 Access denied for user ''@'localhost' (..._偶遇急雨洗心尘的博客-程序员秘密

错误提示:Access denied for user ''@'localhost' (using password: NO)我遇到的原因是application.yml配置文件中,字段拼写错误。解决办法:确认字段是否拼写错误,和账号密码是否正确!例如我的配置文件正确格式如下:spring: datasource: driver-class-name: com.mysq...

软件开发 - 一定要会做的30张报表之一 - 简单的数据列表_sj500的博客-程序员秘密

报表在应用软件开发中,是很重要的一部分。但是许多程序员可能对写程序很熟,对报表却并没有深入研究。这个教程,将通过30张报表,把报表的各种常见情况进行比较深入的讲解。 可以说,弄清楚了这30张报表怎么做,你就可以应对应用软件开发中绝大部分的报表需求。再碰到客户的各种要求,你就能够很容易判断出难易程度、工作量,清楚地知道能不能实现、怎么实现。第1张:最基本的数据列表500){this.re

存储过程造离散数据_爱java的训的博客-程序员秘密

平时我们造数据都是简单的在代码块中造,begin for....end这种代码块去循环造数据,这样造出来的数据单一,数据都是连续性的。最近开发应老大要求造一些离散的数据。所以首先想到了使用存储过程来生成一些离散的关联的,重要的数据。一:首先先创建packge:create or replace package pkg_xiaomo_test_report_data is  ---创建...

实验1:跑马灯实验_泪无痕z的博客-程序员秘密

一、IO简介 (1)工程目录二、原理图三、初始化结构体 typedef struct { uint32_t GPIO_Pin; //设置IO口 GPIOMode_TypeDef GPIO_Mode; //设置GPIO的工作模式。 ...

Java随机生成8位字符串_八位的string_淘气的二进制的博客-程序员秘密

转载 http://www.aichengxu.com/java/6875596.htm因业务需要,使用UUID生成32位的字符串有点长,这个生成8位的字符串方案可行 public static String[] chars = new String[] { &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;, &quot;f&quot;, &quot;g&quot;, &q

推荐文章

热门文章

相关标签