当前位置: 首页 > news >正文

list集合

List集合

List集合的概述

  • 有序集合(也称之为序列),用户可以精确的控制列表中的每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素

  • 与 Set 集合不同,列表通常允许重复的元素

  • List 集合的特点

    • 有序:存储和读取的元素顺序一致

    • 可重复:存储的元素可以重复

demo:
在这里插入图片描述

List集合中的常用方法

方法名说明
void add(int index, E element)在集合中指定的位置插入指定的元素
E remove(int index)删除指定索引出的元素,返回被删除的元素
E set(int index, E element)修改指定索引出的元素,返回被修改的元素
E get(int index)返回指定索引出的元素

add和remove方法

demo:

package demo02;import java.util.ArrayList;
import java.util.List;
/*** @Classname : demo02* @Description : TODO List集合中的特有方法* @Author : lin_refuel@qq.com*/
public class demo02 {public static void main(String[] args) {//TODO 一个list的集合,list集合是带有索引的,List<String> list = new ArrayList<>();// TODO 常用的几个方法,add添加元素list.add("东邪");list.add("西毒");list.add("南帝");list.add("北丐");list.add(2, "王重阳");//集合索引为2的位置添加王重阳System.out.println(list);System.out.println("==========================");//TODO remove,删除指定位置元素,返回被删除元素,删除索引为2的值System.out.println(list.remove(2));//返回值是王重阳System.out.println(list);}
}

set 和 get 方法

package demo02;import java.util.ArrayList;
import java.util.List;
/*** @Classname : demo02* @Description : TODO List集合中的特有方法* @Author : lin_refuel@qq.com*/
public class demo02 {public static void main(String[] args) {//TODO 一个list的集合,list集合是带有索引的,List<String> list = new ArrayList<>();list.add("东邪");list.add("西毒");list.add("南帝");list.add("北丐");list.add(2, "王重阳");//集合索引为2的位置添加王重阳System.out.println(list);// TODO set方法,修改指定索引的值list.set(2,"周伯通");//王重阳被修改成为了周伯通System.out.println(list);//TODO get方法,返回指定索引的值System.out.println(list.get(3));//返回”南帝“}
}

运行结果
在这里插入图片描述

List集合的几种遍历方式

package demo02;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;/*** @Classname : demo03* @Description : TODO List集合的几种遍历方式* @Author : lin_refuel@qq.com*/
public class demo03 {public static void main(String[] args) {//空的list集合List<String> list = new ArrayList<>();//添加几个元素list.add("雷伊");list.add("盖亚");list.add("卡修斯");list.add("布莱克");//TODO list集合遍历:方式一 for循环进行遍历for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i)+",");}System.out.println("\n===================");//TODO 方式二:增强for循环for(String name : list){System.out.print(name+",");}System.out.println("\n===================");//TODO 方式三:迭代器 IteratorIterator<String> it = list.iterator();while (it.hasNext())System.out.print(it.next()+",");}
}

并发性异常的起因和处理方式

并发性异常,当使用迭代器遍历集合时,往集合里面添加新的元素,这个会导致迭代器报出异常,该异常是非检测性异常

在这里插入图片描述
demo: 处理上面异常的方式

package demo02;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;/*** @Classname : demo04* @Description : TODO 并发性异常处理方式* @Author : lin_refuel@qq.com*/
public class demo04 {public static void main(String[] args) {List<String> list = new ArrayList<>();//集合里面的原始数据list.add("JavaSE");list.add("JavaScript");list.add("MySQL");list.add("JavaWeb");//建立一个for循环,先进行添加for (int i = 0; i < list.size(); i++) {if("MySQL".equals(list.get(i)))list.add(i+1,"JDBC");}//System.out.println(list);//再次通过迭代器进行遍历Iterator<String> it = list.iterator();while(it.hasNext()) {System.out.print(it.next()+",");}}
}

ListIterator迭代器

  • ListIterator:列表迭代器

    • 通过 List 集合的 listIterator() 方法得到,所以他是 List 集合的特有迭代器

    • 用于允许程序员沿任何一个方向遍历列表的迭代器,在迭代期间修改列表,并获取列表迭代器的当前位置

方法名说明
E next()返回迭代中的下一个元素
boolean hasNext()如果迭代具有更多元素,则返回 true
E pervious()返回列表中的上一个元素
boolean hasPrevious()如果此列表迭代器在相反方向遍历列表是具有更多元素,则返回 true
void add(E e)将指定元素插入列表
package demo02;import java.util.ArrayList;import java.util.ListIterator;/*** @Classname : demo05* @Description : TODO List iterator* @Author : lin_refuel@qq.com*/
public class demo05 {public static void main(String[] args) {//一个空的集合ArrayList<String> list = new ArrayList<>();//添加元素list.add("JavaSE");list.add("HTML");list.add("JavaScript");list.add("JDBC");//迭代器存储的原始的目录ListIterator<String> lit = list.listIterator();//循环遍历while (lit.hasNext()){System.out.print(lit.next()+",");}System.out.println("\n===========================");//TODO 集合的反向遍历是需要先进行一次正常遍历后才能反向遍历//  ListIterator<String> lit = list.listIterator();while(lit.hasPrevious()){System.out.print(lit.previous()+",");}}
}

运行结果:
在这里插入图片描述

ListIterator的并非性异常处理

package demo02;import java.util.ArrayList;
import java.util.ListIterator;/*** @Classname : demo06* @Description : TODO ListIterator并发性异常处理* @Author : lin_refuel@qq.com*/
public class demo06 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加元素list.add("JavaSE");list.add("HTML");list.add("MySQL");list.add("JavaScript");//使用list集合的特有的迭代器ListIterator进行遍历ListIterator<String> lit = list.listIterator();//在"MySQL",的后面添加"JDBC"while(lit.hasNext()){String str = lit.next();if(str.equals("MySQL"))// TODO list.add("JDBC"); 会出现并非性异常//解决方式:调用ListIterator迭代器的方法add可以避免问题lit.add("JDBC");}System.out.println(list);}
}
http://www.lryc.cn/news/266242.html

相关文章:

  • Vue3学习(后端开发)
  • 爬虫字典生成工具,CeWL使用教程
  • 消息队列之关于如何实现延时队列
  • Linux Shell 002-基础知识
  • 前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
  • 【微服务】springboot整合kafka-stream使用详解
  • 什么是动态代理?
  • 【OAuth2】:赋予用户控制权的安全通行证--原理篇
  • 【K8s】2# 使用kuboard管理K8s集群(kuboard安装)
  • 爬虫是什么?起什么作用?
  • 代码随想录27期|Python|Day24|回溯法|理论基础|77.组合
  • mysql(49) : 大数据按分区导出数据
  • 阿里云ECS配置IPv6后,如果无法访问该服务器上的网站,可检查如下配置
  • 基于SSM的双减后初小教育课外学习生活活动平台的设计与实现
  • HTTP前端请求
  • 前端性能优化二十四:花裤衩模板第三方库打包
  • 多维时序 | MATLAB实现BiTCN-Multihead-Attention多头注意力机制多变量时间序列预测
  • Qt的简单游戏实现提供完整代码
  • SpringMVC之文件的下载
  • 计算机组成原理第6章-(算术运算)【下】
  • 【开题报告】基于微信小程序的校园资讯平台的设计与实现
  • VUE前端导出文件之file-saver插件
  • 【Earth Engine】协同Sentinel-1/2使用随机森林回归实现高分辨率相对财富(贫困)制图
  • C++ 检测 是不是 com组件 的办法 已解决
  • linux buffer的回写的触发链路
  • Lambda表达式超详解
  • 西门子博途与菲尼克斯无线蓝牙模块通讯
  • vue2 之 实现pdf电子签章
  • 什么是MVC?MVC框架的优势和特点
  • 主从复制mysql-replication | Replication故障排除