1.List集合

以下面的例子来解释存储有序和存储重复

如上图,我们是怎么添加这些字符串的,打印的时候就是按照这个顺序打印的--存取有序

并且“张三”出现了两次,也存入了两次--存储重复

因为List有索引,所以该接口有关于索引的独特的api



..

1.remove注意事项

List有两个remove方法,一个是根据内容删元素,来自Collection,另一个是自身的根据索引做删除

我们将泛型改为Integer,然后存入111,222,333,因为这三个是整数类型,系统会帮我们自动装箱,修改为Integer类型

假如我们要删除222,那么我们选择remove根据内容删,就会出现问题

出现了索引越界异常,系统把我们的222当成了索引

--此时我们要手动装箱,将222修改为Integer类型,这时再根据内容做删除就不会出现这种问题了



..

2.List遍历操作

第四个操作和ArrayList一样,不多说,主要说第五种方法

1.ListIterator迭代器

与普通迭代器使用方法一样

3.并发修改异常

如图,我们要删除掉集合中的“温油”,遍历集合的时候,调用了集合的remove方法



..

设计者担心迭代器在遍历操作时,使用者乱动数据,导致系统出错,所以设置了此异常

解决方法--使用迭代器自带的增删方法

普通迭代器里自带删除方法,如果我们要删除某些元素,使用迭代器调用remove即可

如果要增加某个元素,普通迭代器里没有add方法,我们要使用ListIterator迭代器,该迭代器自带增加方法



..

总结

了解一个并发修改异常的小bug

List集合--java进阶day09的更多相关文章

  1. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

  2. JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法

    JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很 ...

  3. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  4. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  5. Java进阶3. 内存回收机制

    Java进阶3. 内存回收机制 20131029 前言: 学过C++的都知道,C++中内存需要程序员自己维护.说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程 ...

  6. Java进阶

    Java进阶(一)Annotation(注解) Java进阶(二)当我们说线程安全时,到底在说什么 Java进阶(三)多线程开发关键技术 Java进阶(四)线程间通信方式对比 Java进阶(五)NIO ...

  7. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

  8. Java进阶教程:使用Lombok提升开发效率

    Java进阶教程:使用Lombok提升开发效率 Lombok Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这 ...

  9. java进阶视频分享

    更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...

  10. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

随机推荐

  1. Commit规范

    Commit规范 遵循commit规范是一件很重要的事,不仅更规范,而且也方便其他人查看git记录,所以这篇博客就用来浅记一下commit需要遵循的基本规范. commit格式 在 Angular 规 ...

  2. 内存吞金兽(Elasticsearch)的那些事儿 -- 数据结构及巧妙算法

    系列目录 内存吞金兽(Elasticsearch)的那些事儿 -- 认识一下 内存吞金兽(Elasticsearch)的那些事儿 -- 数据结构及巧妙算法 内存吞金兽(Elasticsearch)的那 ...

  3. VueJs(1)---操作指南

    [VueJs入门] 一.上手步骤 vue.js和jquery一样,只要引入vue.js就可以了. 1.创建一个Vue实例: 先引入Vue.js文件,然后new一个Vue的实例即可.如下面的代码,通过& ...

  4. 分布式事务---2PC和3PC原理TCC事务

    分布式事务(1)---2PC和3PC原理 分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题. 分布式事物常见解决方案: 2PC两段提交协议 3 ...

  5. ctfshow--web3 incluede伪协议注入

    这题一看就知道是个伪协议的题 直接用data伪协议 ls 查看目录 data://text/plainy, 再cat 一下就拿到flag了

  6. 【RocketMQ 消息中间件】RocketMQ篇之-消息存储 为什么性能高 CommitLog ConsumeQueue IndexFile 刷盘机制 同步 异步

    RocketMQ篇之-消息存储 目录 RocketMQ篇之-消息存储 (前置)消息存储交互流程 (一)存储系统 1. 内存存储 2. 关系型数据库存储 3. 文件存储 (二)消息的存储和发送 1. 消 ...

  7. CDN与前端技术

    本文分享自天翼云开发者社区<CDN与前端技术>,作者:张****亮 CDN(Content Delivery Network)是一种广泛应用于网络加速和内容分发的技术.它通过在全球各地部署 ...

  8. POI包操作Excel代码

    1.创建工作簿 (WORKBOOK)     HSSFWorkbook wb = new HSSFWorkbook();     FileOutputStream fileOut = new File ...

  9. P4774 [NOI2018] 屠龙勇士 题解

    传送门 题解 思路 由题目可知,一条龙被攻击 \(x\) 次并回复若干次后生命值恰好为 \(0\) 则死亡,可以得出如下式子: \[\large ATK_i \cdot x \equiv a_i(\m ...

  10. salesforce零基础学习(一百四十三)零碎知识点小总结(十一)

    本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_lab_dynamic_highlights_panel.htm ...