java第14天 Iterator 以及List各类容器对比

图生文【学习中】 图生文:提供图像,把图像对应的信息用文本描述出来 阅读详情

一.Iterator 迭代器

控制变量的消亡有两种方式

1.普通代码块

public static void main(String[] args){
      {
          int x;
      }
    System.out.println(x);//无法获取 已经消亡
    }

2.通过for循环来控制

import java.util.*;
public class Exec1{
    public static void main(String[] args){
        ArrayList<String>list=new ArrayList<>();
        Collections.addAll(list,"Andy","Lee","Anron");

        //迭代器遍历 A开头的名字
        for(Iterator<String> car=list.iterator();car.hasNext();){
            String name=car.next();
            /*if(name.charAt(0)=='A'){
				System.out.print(name+" ");
			}*/
            if(name.startsWith("A")){
                System.out.print(name+" ");
            }
        }
    }
}

二.ArrayList的遍历

for+下标

foreach/ 增强型for循环【jdk5.0】

迭代器

for(Iterator<集合的泛型> car = ArrayList对
象.iterator();car.hasNext();){
// 光标下移 + 返回元素
集合的泛型 x = car.next();
}

三.ArrayList中的删除

remove(int 下标) 根据下标进行删除 // 下标范围

[0,list.size()-1]

remove(元素) 根据元素进行删除 // 元素如果重复 只删

除第一个

* 遍历删除集合中的所有

1 for+下标 和 倒序

2 只要集合中有元素 就一直删除第一个

【list.remove(0)】

四.ArrayList删除remove(元素)的底层

remove(元素)底层是

拿着要被删除的元素跟集合中的元素做 equals()比较

contains(元素) 底层是

拿着要被找的元素跟集合中的元素做equals() 比较

indexOf(元素) 底层是

拿着要被找的元素跟集合中的元素做equals() 比较

lastIndexOf(元素) 底层是

拿着要被找的元素跟集合中的元素做equals() 比较

五.遍历删除

遍历+删除可能会产生CME

CME => ConcurrentModificationException

// 并发修改异常

场景:使用迭代器遍历集合的同时使用集合的删除可能会出

现CME[并发修改异常]

解决:1 for+下标 集合的删除[倒序]

2 迭代器的遍历 + 迭代器的删除

// car.remove() 光标指向谁删除谁

六.ArrayList的构造方法/

扩容 ensureCapacity(int)

缩容 trimToSize() 将集合的容量缩减为集合个数

/ 1 底层默认开辟十块空间
ArrayList list = new ArrayList();
// 2 指定初始化容量创建
// 底层开辟1000块空间
ArrayList list = new ArrayList(1000);

  • trimToSize() 将集合的容量缩减为集合个数
  • ensureCapacity(int) 一次性将集合的容量扩到指定
    的大小
    //==================================
    // ArrayList可以添加无数个元素 由于底层会自动扩容
    ArrayList 扩容机制 [区分jdk版本]
    103/2+1 => 16
    jdk6.0之前 oldCap3/2+1 => newCap
  • jdk7.0之后 oldCap+ (oldCap>>1) => newCap
  • 虽然我们不会再主动扩容,但是在项目开发的时候尽量避免
    扩容(why?)【每次涉及5个步骤 浪费时间和空间】
    1 创建一个新的数组对象
    2 将老数组里面的元素复制到新数组中
    3 改变引用指向
    4 回收老数组对象
    5 添加元素


七.面试题Vector 和 ArrayList的区别

Vector和ArrayList语法一模一样

1 线程机制不同

Vector同一时间只能允许一个线程进行访问 效率

较低 但是不会出现并发问题

ArrayList同一时间允许多个线程进行访问 效率

较高 但是可能出现并发问题。 jdk5.0开始

Collections提供了一个方法可以将线程不安全的

ArrayList转变为线程安全的List集合,所以 Vector

慢慢被淘汰了。。。

List ll =

Collections.synchronizedList(list);

2 扩容机制不同

Vector区分构造方法

Vector(8) 二倍扩容 8-》16-》32

Vector(8,2) 定长扩容 8-》10-》12

ArrayList区分jdk版本

jdk6.0之前 x*3/2+1

jdk7.0之后 x+(x>>1)

3 出现的版本不同

Vector since jdk1.0

ArrayList since jdk1.2

八.面试题LinkedList和ArrayList的区别

LinkedList的语法和ArrayList 一模一样

LinkedList和ArrayList主要是底层的数据结构不同

LinkedList 底层基于链表【双向循环链表】

优点:添加/删除快

缺点:查找慢

ArrayList 底层基于数组

优点:查找迅速

缺点:添加/删除慢

eg:借助时间毫秒数System.currentTimeMillis()测效 率

九.Stack-栈【先进后出】【后进先出】 【LIFO】

用数组模拟栈结构

eg:微信消息【最先来的消息往下】

push(元素) 往栈中添加元素

pop() 返回栈顶的元素

【数据集】2019年中国1km格网河网密度数据集 中国1km格网河网密度数据集 阅读详情

相关推荐

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5中间件的完整流程,包括环境准备、依赖调整、Web.xml版本适配、部署配置优化及常见问题解决方案。特别针对信创改造需求,提供了排除Tomcat依赖、处理BES专用starter等实用技巧,帮助开发者顺利完成国产中间件迁移。

weixin_30825581的博客 1100

Java容器学习,一文读懂Java容器使用知识文集。

在 Java 中,容器通常指的是常用的数据结构集合,Java 提供了多种容器来存储、操作和访问数据。主要的 Java 容器包括以下几种......

m0_50308467的博客 1333

软件项目成本控制实战:从COCOMO模型到挣值分析的5个关键步骤

本文详细介绍了软件项目成本控制的5个关键步骤,从COCOMO模型估算到挣值分析预警,帮助中小型团队精准管理预算。通过简化COCOMO II的有机模式、动态建立成本基准、轻量化挣值分析等方法,项目经理可以有效应对预算超支和进度延误问题,提升项目成功率。

weixin_30733003的博客 227

Java 集合中关于Iterator 和ListIterator的详解

1.IteratorIterator的定义如下:public interface Iterator&lt;E&gt; {}Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下:forEachRemaining(Consumer&lt;? super E&gt; action):为每个剩余元素执行给定的操作,直到所有的元素...

Jibert的博客 8万+

别再手动下单了!用Python+EasyTrader+同花顺,5分钟搞定你的第一个自动化交易机器人

本文详细介绍了如何使用Python和EasyTrader结合同花顺客户端快速构建自动化交易机器人。从环境配置到实战脚本编写,涵盖自动打新、条件单、跟单策略等核心功能,并分享性能优化与风险控制技巧,帮助投资者高效实现自动化交易。

weixin_30381317的博客 398

使用STC15F104W产生PWM脉冲

最近的小项目中使用到了STC15F104W产生PWM脉冲

yeats1989的专栏 1万+

java list取值_Java集合详解

  一、集合的由来  通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了!  为了对集合有个更加深...

weixin_39588419的博客 6045

CCS20实战入门:第一个工程搭建示例

通过实际操作演示如何在ccs20中创建并配置首个开发项目,涵盖环境设置与基础调试步骤,帮助新手快速上手ccs20集成开发环境,提升嵌入式开发效率。

weixin_31185473的博客 888

Java容器类总结,容器分类架构图

Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。从本文开始将开启一个系列详细分析Java容器中的每个成员,包括源代码分析,性能分析,不同容器之间对比等等,链接将同步更新在本文和置顶博文内。 Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Colle...

【小石头的茅坑】 71万+

2024.6.10丨基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释指南

本文详细介绍了基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释方法,涵盖工具安装、参数优化、数据库选择及实战案例解析。通过DIAMOND的快速比对和VFDB的全面毒力因子数据,显著提升微生物基因组研究效率,适用于临床检测、食品安全监测等多个场景。

weixin_33712987的博客 376

echarts 饼图(加载进度条动画效果)

1、外侧动画细线效果运动“custom”自定义系列中“renderItem”属性来实现,动态修改起始角度和终止角度。2、圆环使用" pie "类型添加两个data值来画百分比圆环,动态修改data中的值。

God's asylum的博客 1631

java容器类1:Collection,List,ArrayList,LinkedList深入解读

1、 Iterable 与 Iterator Iterable 是个接口,实现此接口使集合对象可以通过迭代器遍历自身元素. public interface Iterable<T> 修饰符和返回值 方法名 描述 Iterator<T> iterator() 返回一个内部元素为T类型的迭代器 default void forEach...

sinolover的专栏 340

【Qt】QtCreator远程部署、调试程序

1)QtCreator 工具–> 选项 --> 设备 --> 添加2)设备设置向导选择–> Generic Linux Device --> 开启向导3)填写“标识配置的名称”(随便写)、设备IP、用户名 --> 下一步4)选择配对秘密文件,第一次配对,可以不填写,点击“下一步”5)点击“完成”6)设备添加成功,需要再配置SSH端口号、用户名、密码等7)保存SSH登陆密码:验证类型选择默认“Default”–> “创建新密钥”–> “Test”

郭老二 5194

JAVA深化篇_14——Iterator迭代器接口介绍

Collection接口继承了Iterable接口,在该接口中包含一个名为iterator的抽象方法,所有实现了Collection接口的容器类对该方法做了具体实现。iterator方法会返回一个Iterator接口类型的迭代器对象,在该对象中包含了三个方法用于实现对单例容器的迭代处理。

guojiaqi_的博客 378

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java集合中关于Iterator和ListIterator的详解

Java集合中关于Iterator和ListIterator的详解 Iterator是一个集合, 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中

weixin_42925339的博客 283

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

谈谈List接口的方法级使用( Iterator和ListIterator的区别)

总结:包含集合容器的属性,和对集合里的元素进行增删改查、迭代等操作,JDK1.8之后List接口中 有添加了一个spliterator()方法,是一个分割迭代器,可以支持在不同的位置上迭代。 方法: int size();//长度 boolean isEmpty();//是否为空 boolean contains(Object o);//是否包含该元素 Iterator iterator();得到一个迭代器 Object[] toArray();//输出为数组(数组长度与集合元素的个数相等) T[] to

qq_45900301的博客 265

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java listiterator用法_Java 集合中关于Iterator和ListIterator的用法说明

1.IteratorIterator的定义如下:public interface Iterator {}Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下:forEachRemaining(Consumer super E> action):为每个剩余元素执行给定的操作,直到所有的元素都已经被处理或行动将抛出一个...

weixin_42511373的博客 1890

java容器

容器 常见的容器图录: 1.Collection和Collections的区别? Collection: java.util.Collection是集合类的一个顶级接口,为各种具体的集合提供了最大化的统一操作方式。 Collections: 是集合类的一个工具类,它提供了一系列静态法,用于对集合中元素进行排序,搜索等各种操作。 2.List、Set、Map之间的区别是什么? 3.HashM......

weixin_43766298的博客 770

java容器类_Java容器类

容器类:是Java以类库的形式供用户开发程序时可直接使用的各种数据结构。容器接口有两种:List列表接口 Set集合接口一、列表接口List性质:List是Collection子接口,它是一种包含有序元素的线性表,其中的元素必须有顺序存放,且可重复,可为nullList有两种:链表类LinkedList和数组列表类ArrayList创建两种表的对象(需先引入java.util....

weixin_42360788的博客 204

Java容器类

容器类:是Java以类库的形式供用户开发程序时可直接使用的各种数据结构。 容器接口有两种:List列表接口 Set集合接口 一、列表接口List 性质:List是Collection子接口,它是一种包含有序元素的线性表,其中的元素必须有顺序存放,且可重复,可为null List有两种:链表类LinkedList和数组列表类ArrayList 创建两种表的对象...

bangsi8103的博客 133

java 迭代器遍历List Set Map

Iterator接口: 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象 Iterator对象称作为迭代器,用以方便的对容器内元素的遍历操作,Iterator接口定义了如下方法: boolean hashNext();//判断是否有元素没有被遍历 Object next();//返回游标当前位置的元素并将游标移动到下一个位置 ...

weixin_30385925的博客 256

java容器和6个常见的接口

      容器API属于 java.util.* 内   重点:1图 1类 3 知识点 6 接口   1图:常见的一些接口   Set:没有顺序且不可以重复。 List:有顺序而且可以重复   1类:Collections        3知识点: foreach; Generic(泛型); Auto_Boxing/unboxing; 6接口: ...

方兴未艾 1974

【JAVA集合框架之List与Set】

一、概述 JAVA的集合框架中定义了一系列的类,这些类都是存储数据的容器。与数组、StringBuffer(StringBuilder)相比,它的特点是: 1.用于存储对象。 2.集合长度可变。 3.不可以存储基本数据类型。 比较三种容器的特点: 数组必须存放同一种元素。StringBuffer必须转换成字符串才能使用,如果想拿出单独的一个元素几乎不可能。数据有很多使用对象存...

227

Java容器学习之List

List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList、LinkedList、Vector、Stack等。 ArrayList是基于数组实现的,是一个数组队列,可以动态扩容 LinkedList是基于链表实现的,是一个双向循环列表,可以当做堆栈使用 Vector是基于数组实现的,是一个...

weixin_30820151的博客 102

Java中Iterator(迭代器)的用法及其背后机制的探究

在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。   Java中的Iterator功能比较简单,并且只能单向移动:   (1) 使用方法iterator()要求容器返回一个Iterato

天道酬勤,坚信不疑 509

基础学习-java容器

文章目录1. java 容器都有哪些?2. Collection 和 Collections 有什么区别?3. List、Set、Map 之间的区别是什么?4. HashMap 和 Hashtable 有什么区别?5. 如何决定使用 HashMap 还是 TreeMap?6. 说一下 HashMap 的实现原理?7. 说一下 HashSet 的实现原理?8. ArrayList 和 LinkedList 的区别是什么?9. 如何实现数组和 List 之间的转换?10. ArrayList 和 Vector

weixin_41077841的博客 139
上一篇: 学java 第13天 集合ArrayList
下一篇: java第16天 hashSet以及linkedHashSet
Miserables_
博客等级 码龄2年 317粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值