Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

    • Java简介
    • 基础语法
    • 数据类型
    • 变量
    • 运算符
    • 输入输出
    • 流程控制
    • 循环语句
    • idea中的辅助键
    • 数组
    • 方法
    • 面向对象基础
    • 字符串
    • ArrayList集合
    • 继承
    • 修饰符
    • 多态
    • 抽象
    • 接口
    • 类名作为形参和返回值
    • 内部类
    • Api
    • 异常
    • 集合
      • collectio
        • removeIf
      • 迭代器
        • iterator()
        • hasNext()
        • next()
      • 增强for循环
      • List
      • 单向链表
      • 双向链表
      • ArrayList 源码
        • 遍历ArrayList
    • 泛型
    • Set集合和比较器
    • 树
    • 哈希
    • 可变参数
    • 创建不可变的集合
    • Stream流
    • 方法引用
    • File
    • 多线程
    • 多线程高级
    • 网络编程
    • 类加载器
    • 反射
    • XML
    • 枚举
    • 注解
    • 单元测试
    • 日志
    • HTTP协议
    • Servlet
    • 请求对象
    • 响应对象
    • Cookie
    • Session
    • JSP
    • Listener
    • JDBC
  • JavaEE

  • Linux

  • MySQL

  • NoSQL

  • Python

  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • JavaSE
Iekr
2021-07-06
目录

集合

# 集合

# collectio

# removeIf

removeIf () 方法底层会遍历集合,得到集合中的每一个元素

如果返回一个 true 则删除该传入的元素删除

可以使用 lambda 函数

Collection<String> array = new ArrayList<>();
        array.add("aaa");
        array.add("bbb");
        array.add("cccc");
        array.removeIf(
                (String s) ->
                        s.length() == 3
                
        );
1
2
3
4
5
6
7
8
9

# 迭代器

# iterator()

返回集合中的迭代器对象

Iterator<String> it = list.iterator();
1

# hasNext()

判断当前位置是否有元素可被取出

有返回 true 没有则返回 false

# next()

将迭代器对象指向下一个元素,并返回当前元素

while (it.hasNext()){
            System.out.println(it.next());
        }
1
2
3

# 增强 for 循环

所有的 (Collection) 单列集合都可以使用迭代器或增强 for, 双列集合无法使用

for(String s : list){
    System.out.println(s);
}
1
2
3

# List

查询数据,数组通过地址值和索引定位元素,查询任意数据耗时相同, 查询速度快

删除数据,要将被删数据删除,同时后面个每个数据前移, 删除效率低

添加数据,添加位置后的每个数据后移,再添加元素, 添加效率极低

# 单向链表

链表通过每个结点 (元素) 指向下一个结点的地址值来形成链表,如只有 1 个结点则该结点的指向地址为空 (结束结点)

查询数据,(无论查询是位置还是元素) 只能从头结点一直查询到被查结点, 查询效率慢

删除数据,只需要修改被删除结点前一个结点的指向地址为被删结点的后一个结点即可. 删除效率快

添加数据,添加结点与删除结点类型,只需在添加位置更改前后结点的指向地址即可. 添加效率快

# 双向链表

单向链表每个结点只存储 值和下一个结点的地址.

而双向保留 3 个数据,分别为,前一个结点的地址 值 下一个结点的地址。这样我们可以从后找到前或从前找到后。查询位置的时候会判断离头结点近还是尾结点近来进行链表查询

# ArrayList 源码

默认空参构造方法 是创建一个长度为 0 的数组

当调用 add 方法会把长度为 0 的 ArrayList 初始化为长度为 10, 并且都为 null, 源码方法名为 elementData

并且会有一个变量 size 标记当前数组元素长度

如果 size 超出了默认长度 10 或者当前数组长度,则会自动扩容,扩容为当前数组长度 1.5 倍的大小,扩容后的数组为空,把原来的数组拷贝到新的数组中,并且 size 保持不变.

# 遍历 ArrayList

ArrayList 中提供了 size 方法,直接返回当前 size (即为最后一个元素的下标), 而不是返回 ArrayList 的长度

编辑 (opens new window)
上次更新: 2023/12/06, 01:31:48
异常
泛型

← 异常 泛型→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式