我的前端坑
  • 关于本书
  • CSS JS 常用
    • 常用 CSS 样式
    • 坑爹的 CSS
    • sass 入门
    • canvas 总结
    • 常用 JS 函数
    • 表单和 FormData 对象
    • 水平滑动 tab 居中
    • js 中的 this
    • sse 和 fetch
    • js 原型链与 class 类
  • TypeScript
    • TS 概念
    • interface 与 type
    • interface 接口
    • Ts 配合 ESLint 和 prettier
  • 小程序
    • 常用小程序代码
  • VUE
    • VUE2 小技巧
    • VUE-CLI 中的 NODE_ENV
  • VUE3
    • VUE3 自行构建 sfc 遇到的坑
    • VUE3 v-model 的实现
    • VUE3 使用总结
    • VUE3 ref
  • vite
    • vite
  • http 请求
    • 前端实现下载
    • cors 跨域请求
    • windows hosts 文件
    • err_blocked_by_client 错误
  • 前端工具
    • npm 和 Node
      • 常见问题
      • npmTips
      • package.json 与 package-lock.json
      • npx
      • exports 与 module.exports
      • ESLint
    • VIM
      • vim 常用
    • Git
      • Git 常用命令
      • Git 小 tips
    • express
  • 后端工具
    • mysql 常见问题
    • docker 常见问题
    • docker
  • java
    • java 常用
    • lambda 表达式
    • java 字符串
    • java 泛型
    • java 反射
    • intellij IDEA
    • 多态
    • java 包管理
    • sql 查询语言
    • java 反射
    • java 异常
    • java 集合
    • spring
  • 命令行
    • 命令行 常用
  • 专利撰写 ppt
  • 后台简述
Powered by GitBook
On this page
  • 数据结构:队列(queue)
  • 数据结构:映射(map)
  • Collection 接口
  • 队列接口:Queue Deque 和 PriorityQueue
  • Collection 接口实用方法

Was this helpful?

  1. java

java 集合

Previousjava 异常Nextspring

Last updated 2 years ago

Was this helpful?

java集合框架的接口

java 集合有两个基本接口:

  • Collection

  • Map

数据结构:队列(queue)

队列(queue)这种数据结构的实现方式:

  • 循环数组:比链表更高效,支持快速的随机访问,但它是一个有界集合,容量有限。

  • 链表:不支持快速的随机访问,随机访问很慢。如果要查看链表中的第 n 个元素,就必 须从头开始,越过 n-1 个元素,没有捷径可走。

数据结构:映射(map)

知道某些关键信息,需要查找与之关联的元素,映射(map)数据结构就是为此设计: 映射用来存放键值对,提供键,就能查到值。

Collection 接口

队列接口:Queue Deque 和 PriorityQueue

java 中 Queue (队列)接口特点:

  • 可在尾部添加元素,头部删除元素

  • 可查找队列中元素的个数

  • 先进先出方式检索对象

java 中 Deque (双端队列)接口特点:

  • 可在尾部和头部添加或删除元素

  • 不支持在队列中间添加元素

java 中 PriorityQueue (优先队列)接口特点:

  • 按照任意顺序插入,但会按照有序顺序检索

ArrayDeque 类的实现用的是循环数组队列, LinkedList 类的实现使用的是链表, 它们都实现了 Deque 接口。

// Collection 扩展了 Iterable 接口
public interface Collection<E> extends Iterable<E>{
  boolean add(E element);
  Iterator<E> iterator();
  .  .  .
  boolean isEmpty();
  boolean contails(Object obj);
  boolean contailsAll(Collection<?> c);
  .  .  .
}
// Iterable 接口
public interface Iterable<T> {
  Iterator<T> iterator();
    .  .  .
}
// 迭代器
public interface Iterator<E>{
  E next();
  boolean hasNext();
  void remove();
  default void forEachRemaining(Consumer<? super E> action)
}

java 集合类库中的迭代器不同于其他语言,传统集合类库迭代器是根据数组索引建模,可 以使用索引 i 直接找到元素 a[i],java 迭代器查找一个元素的唯一方法是调用 next,可 以认为 java 迭代器位于两个元素之间,当调用 next 时,迭代器就越过下一个元素,并返 回刚刚越过的那个元素的引用。

Collection 接口实用方法

Collection 接口声明了很多有用的方法,所有的实现类都必须提供这些方法。例如:

  • isEmpty()

  • contains()

  • containsAll()

  • equals()

  • addAll()

  • remove()