list集合

news/2024/10/17 6:36:07/

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);}
}

list集合的几种遍历方式

package demo02;import java.util.ArrayList;
import java.util.Iterator;/*** @Classname : demo07* @Description : TODO list集合的几种遍历方式* @Author : lin_refuel@qq.com*/
public class demo07 {public static void main(String[] args) {//学生类集合ArrayList<Student> stuList = new ArrayList<Student>();//添加对象stuList.add(new Student("Licinius", 13));stuList.add(new Student("vinicius", 7));stuList.add(new Student("Mbappe", 5));stuList.add(new Student("messi", 10));stuList.add(new Student("neymar", ));stuList.add(new Student("ronaldo", 13));//TODO **********************************************//方式一:for循环遍历
//        for (int i = 0; i < stuList.size(); i++) {
//            System.out.println(stuList.get(i).getName() + ","+stuList.get(i).getAge());
//        }//方式二:增强for循环
//        for (Student stu : stuList) {
//            System.out.println(stu.getName() + ","+stu.getAge());
//        }// 方式三:迭代器Iterator<Student> it = stuList.iterator();while(it.hasNext()){Student next = it.next();System.out.println(next.getName() +","+next.getAge());}}
}

Linkedlist的一些常用方法

方法名说明
public void addFirst(E e)在列表最前面插入一个给定的元素
public void addLast(E e)将指定的元素追加到列表的末尾
public E getFirst()返回列表中的第一个元素
public E getLast()返回列表中的最后一个元素
public E removeFirst()从列表中删除第一个元素并返回被删除的元素
public E removeLast()从列表中删除最后一个元素并返回被删除的元素

demo:使用方式

package demo03;import java.util.LinkedList;/*** @Classname : demo01* @Description : TODO linklist的常用方法* @Author : lin_refuel@qq.com*/
public class demo01 {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();//添加元素list.add("成员1");list.add("成员2");list.add("成员3");list.add("成员4");//TODO *************************************//在头和尾添加成员方法
//        list.addFirst("成员0"); // 头部添加 成员0
//        list.addLast("成员5");//尾巴添加 成员5
//        System.out.println(list);//[成员0, 成员1, 成员2, 成员3, 成员4, 成员5]//TODO***************************************//获取头部成员和尾部成员System.out.println(list.getFirst()); //成员1System.out.println(list.getLast()); //成员4//TODO***************************************//删除尾部和头部分成员,并且返回被删除的成员System.out.println(list.removeLast());//删除尾部成员4,返回删除值成员4System.out.println(list.removeFirst());//删除头部成员1,返回删除成员1//测试删除后的集合System.out.println(list);//[成员2, 成员3]}
}

http://www.ppmy.cn/news/1283291.html

相关文章

7.7、kali linux环境下搭建DVWA

目录 一、资料下载准备工作 1.1、DVWA源代码下载 二、开启Apache、mysql服务 2.1、下载Apache2文件 2.2、开启Apache2服务 方法一&#xff1a;开启Apache2服务&#xff08;手动&#xff09; 方法二&#xff1a;开启Apache2服务&#xff08;系统自启动&#xff09; 2.3、…

【AI】人工智能本地环境集成安装

目录 1、基础安装 1.1 GPU安装 1.1.1 GPU版本支持 1.1.2 下载CUDA 1.1.3安装CUDA 1.1.4配置环境变量 1.1.5检测CUDA是否安装成功 1.2 CUDNN安装 1.2.1 下载CUDNN 1.2.2 添加配置 1.2.3验证结果 2、pytorch安装

centos 安装oracle 11.2.04 并配置数据库自启动操作记录,一次完成

环境&#xff1a; centos版本7.3&#xff0c;安装的有图形化界面 Oracle11.2.04&#xff0c;之所以选择这个版本是因为网上有人说11其他版本的在安装的过程中会出现这样或那样的问题&#xff0c;下载地址放到文章下面 步骤&#xff0c;按顺序&#xff1a; 1、创建安装Oracle…

智能优化算法应用:基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白鲸算法4.实验参数设定5.算法结果6.参考文献7.MA…

云计算:现代技术的基本要素

众所周知&#xff0c;在儿童教育的早期阶段&#xff0c;幼儿园都会传授塑造未来行为的一些基本准则。 今天&#xff0c;我们可以以类似的方式思考云计算&#xff1a;它已成为现代技术架构中的基本元素。云现在在数字交互、安全和基础设施开发中发挥着关键作用。云不仅仅是另一…

对象属性的重命名

一、对象解构进行对象属性的重命名 const obj { oldName: value };const { oldName: newName } obj; console.log(newName); // 输出: value console.log(obj.oldName) //value console.log(obj) // { oldName: value } 注意&#xff0c;这种重命名方式不会直接修改原…

怎么实现Servlet的自动加载

在实际开发时&#xff0c;有时候会希望某些Servlet程序可以在Tomcat启动时随即启动。但在默认情况下&#xff0c;第一次访问servlet的时候&#xff0c;才创建servlet对象。 如果servlet构造函数里面的代码或者init方法里面的代码比较多&#xff0c;就会导致用户第一次访问serv…

Java BigDecimal 的舍入模式(RoundingMode)

BigDecimal 有 8 种 RoundingMode&#xff08;舍入模式&#xff09; ROUND_UP 进位制&#xff1a;不管保留数字后面是大是小 (0 除外) 都会进 1。结果会向原点的反方向对齐&#xff0c;正数向正无穷方向对齐&#xff0c;负数向负无穷方向对齐。 BigDecimal a new BigDecimal…