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 方式三:迭代器 Iterator
        Iterator<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()); //成员1
        System.out.println(list.getLast()); //成员4
        //TODO***************************************
        //删除尾部和头部分成员,并且返回被删除的成员
        System.out.println(list.removeLast());//删除尾部成员4,返回删除值成员4
        System.out.println(list.removeFirst());//删除头部成员1,返回删除成员1
        //测试删除后的集合
        System.out.println(list);//[成员2, 成员3]
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/273596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…

7、自建代码管理平台:GitLab/Gitea

GitLab/Gitea 一、GitLab1、 GitLab简介2、 GitLab安装 二、Gitea1、Gitea安装2、Gitea创建仓库3、Gitea注册服务 一、GitLab 1、 GitLab简介 GitLab是由GitLabInc.开发&#xff0c;使用MIT许可证的基于网络的Git仓库管理工具&#xff0c;且具有wiki和issue跟踪功能。使用Git…

CTFshow-pwn入门-栈溢出pwn41-pwn42

pwn41 我们首先将pwn文件下载下来&#xff0c;拖入到虚拟机查看一下文件的保护信息。 chmod x pwn checksec pwn该文件只开启了栈不可执行&#xff0c;并且文件是32位的。 我们把文件托到ida32中查看一下反编译代码。 int __cdecl main(int argc, const char **argv, const c…

MySQL数据库:复合查询

目录 一. 多表查询 二. 子查询 2.1 单行子查询 2.2 多行子查询 2.3 多列子查询 2.4 在from语句中使用子查询 三. 合并查询 3.1 union 3.2 union all 四. 总结 前置说明&#xff1a;本文主要oracle 9i的经典雇员信息测试表为例&#xff0c;进行示例演示。 该表有三个…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言&#xff1a;新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言&#xff1a; 大家如果没有看过前几章git的基础操作的话&#xff0c;推荐先看一下&#xff0c;看完再来看这个远程操作&#xf…

ARM12.26

整理三个按键中断代码 key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_gic.h" #include"stm32mp1xx_exti.h" #include"stm32mp1xx_rcc.h" #include"led.h" void k…

ARCGIS PRO SDK 要素空间关系

一、要素与要素查询&#xff0c;返回的是bool值 1、 Touches 判断几何要素是否接触 Touches 如果 geometry1 与 geometry2 接触&#xff0c;则返回 true&#xff0c;否则 false。 touches GeometryEngine.Instance.Touches(Geometry1, Geometry2) 2、…

ROS 传感器 激光雷达

激光雷达&#xff0c;全称Light Detection And Ranging&#xff0c;主要用于利用激光来检测物体以及测量与物体之间的距离&#xff0c;是一种重要的传感器技术&#xff0c;这种技术被广泛应用于自动驾驶、无人船、无人机等领域&#xff0c;用于避障和环境探测。 在ROS环境中&a…

什么是阿里云负载均衡SLB?

目录 硬件或软件负载均衡的区别是什么&#xff1f; 什么是阿里云负载均衡SLB&#xff1f; 阿里云传统型负载均衡CLB 硬件或软件负载均衡的区别是什么&#xff1f; 通过专用硬件实现负载均衡&#xff0c;那么整体成本会较高&#xff0c;而且设备容易出现单点故障&#xff0c;…

简析SoBit 跨链桥图文教程

从BTC网络到Solana网络桥接BRC20 1.打开SoBit平台&#xff1a;在您的网络浏览器中启动SoBit Bridge应用程序。 2.连接您的钱包&#xff1a; 选择SoBit界面右上角的比特币网络来连接您的数字钱包。 3.选择源链、目标链和您想桥接的代币&#xff1a; 从下拉菜单中选择’BTC’作为…

弱电工程计算机网络系统基础知识

我们周围无时无刻不存在一张网&#xff0c;如电话网、电报网、电视网、计算机网络等&#xff1b;即使我们身体内部也存在许许多多的网络系统&#xff0c;如神经系统、消化系统等。最为典型的代表即计算机网络&#xff0c;它是计算机技术与通信技术两个领域的结合。 计算机网络的…

【PTA】L1-016 验证身份(C++)

题目链接 &#xff1a; 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0…

axios进行图片上传组件封装

文章目录 前言图片上传接口&#xff08;axios通信)图片上传使用upload上传头像效果展示总结 前言 node项目使用 axios 库进行简单文件上传的模块封装。 图片上传接口&#xff08;axios通信) 新建upload.js文件&#xff0c;定义一个函数&#xff0c;该函数接受一个上传路径和一…

.Net7.0 或更高版本 System.Drawing.Common 上传图片跨平台方案

项目升级.Net7.0以后&#xff0c;System.Drawing.Common开关已经被删除&#xff0c;且System.Drawing.Common仅在 Windows 上支持 &#xff0c;于是想办法将原来上传图片验证文件名和获取图片扩展名方法替换一下&#xff0c;便开始搜索相关解决方案。 .Net6.0文档&#xff1a;…

【vue滚动条插件vuescroll】【vue自定义滚动条】

文章目录 前言一、使用步骤1.下载2.引入库三、在组件中如何使用&#xff1f;四、跳转到顶部的方法scrollTo() 五、效果总结 前言 由于浏览器自带的滚动条比较不符合设计图&#xff0c;所以在大部分项目中&#xff0c;我们都会自定义滚动条的样式&#xff0c;来还原设计图&…

Hive实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、基于HDFS文件创建外部表4、利用Hive SQL…

安装kafka

静态文件安装&#xff08;单机&#xff09; 解压到指定目录&#xff08;解压到 /usr&#xff09; tar -zxf kafka_2.11-2.2.0.tgz -C /usr/ 到指定的解压目录下 cd /usr/kafka_2.11-2.2.0/ 配置主机名 查看是否配置了HOSTNAME vim /etc/sysconfig/network 没有就新增 HOSTNA…

记录汇川:MODBUS TCP-梯形图

H5U的MODBUS通信不需要编写程序&#xff0c;通过组态MODBUS通信配置表&#xff0c;实现数据通信。 Modbus-TCP 主站即Modbus-TCP客户端&#xff0c;通过Modbus-TCP配置&#xff0c;可最多支持同时与31个 Modbus-TCP服务器&#xff08;从站&#xff09;进行通讯。 …

大数据与人工智能|全面数字化战略与企业数字化转型(第1节 )

要点一&#xff1a;培养跨学科思维 在分析时&#xff0c;需要采用多学科的思维方式 结果不重要&#xff0c;重要的是如何提炼现象、分析问题和得出结论的过程。 1. 介绍了锤子精神和多学科思维方式的重要性。指出了只从自身学科出发解决问题的局限性。 2. 提倡跨学科思维方式&a…

C语言易错知识点九(指针(part three))

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ 许久不见&#xff0c;甚是想念&#xff0c;本大忙人已经很久没有更新博客了&#xff0c;我想大概我的粉丝们早…
最新文章