速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Java 集合类、Skip 列表以及 Google

  • 2007-10-14
  • 本文字数:1154 字

    阅读完需:约 4 分钟

虽然有时认为是理所当然,但 Java Collections API 无疑在每天的 Java 软件开发中扮演着重要的角色。然而 API 和相关的项目从未停止过发展。Alex Miller最近提到了 Java 6 中 API 的变化:

其中尤其引发他兴趣的是 SkipList ,它不像许多普通的 CS 数据接口,相对来说是个新的重新:

skip 列表是个概率性的的数据结构,由 William Pugh 在 1990 年发明,列表基于平行的链接列表,效率相对二叉搜索树(对于大多数操作平均需要 O(log n) 时间)有显著改善。

Google 也一直致力于 collections 领域的工作,并发布了一套建立于标准的 Java Collections Framework 的实现类。虽然还是 alpha 版本 ,但 Google 已经把它们使用在自己的许多服务中,比如 GMail,Reader 和 Blogger。除了专注于为既有的 Java Collections Framework 增加复杂性和灵活性以外,Google 也添加了许多的 collections 和工具类来使得编码变得更简单并提高代码可读性。 其中最值得注意的 collection 是:

  • BiMap - 一个确保唯一值并支持反转视图的 Map
  • Multiset - 一个可以像 List 那样包含重复的值,但又有像 Set 那样的独立顺序的 Collection。通常用于描绘柱状图。
  • Multimap - 类似于 Map,但可以包含重复的键。拥有子类 SetMultimap 和 ListMultimap,提供更多特别的行为。
  • ClassToInstanceMap - 一个特殊化的 Map,它的键是 class 而对应的值 class 的实例。

Google 还包含许多跟这些新的 collection 类配合使用的工具类。其中包含:

  • Comparators - 自然顺序的,复合的,支持 null,随机的……
  • IteratorsIterables - 基于 Element 的结构,循环,连接,分割,通过条件过滤,使用函数进行转换
  • Lists,SetsMaps - 过多的方便的工厂方法及其他
  • PrimitiveArrays - 原始数组的“装箱”/“拆箱”
  • Object.equals 和 hashCode - 提供内建的对 null 的处理

Public Object 使用 Google 的 Collection 库编写了大量的示例。这些示例 中包含使用Java Collections/Utilities 的代码片段,也包含当使用Google 的Collection 库时的代码样式。对于如何使用这个类库, MultiMap Objects.equal 和 hashCode 提供了很好的范例。Google 的 Collection 库遵守 JDK 接口,现在是用 1.5 的 JDK 进行开发,并在考虑未来对 JDK1.6 的支持。这里是完整的API FAQ

查看英文原文: Java Collections, Skip Lists, and Google

2007-10-14 09:501402
用户头像

发布了 127 篇内容, 共 43.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

王者并发课-钻石2:分而治之-如何从原理深入理解ForkJoinPool的快与慢

MetaThoughts

Java 多线程 并发

奥运“哮喘”运动员为什么越来越多?

脑极体

Windows10下JDK8下载及java环境配置

Bob

8月日更

JDK 从8升级到11,使用 G1 GC,HBase 性能下降近20%。JDK 到底干了什么?

毕昇JDK社区

Hbase 入门详解

Se7en

「SQL数据分析系列」15. 元数据

Databri_AI

sql 脚本 元数据

【最不佳实践】函数计算的函数是什么意思

刘宇

Serverless

从未如此简单:基于Serverless架构的博客

刘宇

Serverless Hexo 博客

我测了啊,我真测了!

QualityFocus

测试 质量保障 线上问题 缺陷

缓存数据历险记(一)--被缓存警察上课一天

卢卡多多

redis 缓存 8月日更

2020-2021华为Java面试真题

Geek_f90455

Java 程序员 后端

NLP随笔(三)

毛显新

人工智能 自然语言处理 神经网络 深度学习

弱口令到底是什么牛马?

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

第一次凡尔赛,字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

编程菌

Java 编程 程序员 面试 计算机

一个好的产品需要一个好的产品

刘宇

产品经理

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

编程菌

Java 编程 程序员 计算机 技术宅

Linux之watch命令

入门小站

Linux

黄金圈法则解读数据中台(1):为什么需要数据中台

水滴

数据中台 黄金圈法则 8月日更

DDD领域驱动设计·学习应用·一

小诚信驿站

领域驱动设计 领域驱动模型DDD 中台架构 领域驱动

Vue组件通信之ref

Augus

8月日更

【最不佳实践】文件上传并不简单

刘宇

Python Serverless 文件上传

趁着课余时间学点python(二)缩进 标识符 保留字 注释 输入输出的理解

ベ布小禅

8月日更

网络攻防学习笔记 Day94

穿过生命散发芬芳

网络攻防 8月日更

在线网页快捷方式创建工具

入门小站

工具

各种消息队列设计要点与对比

海明菌

消息队列 消息队列对比 消息队列系统设计

12年高级工程师的“飞升之路”

Geek_f90455

Java 程序员 后端

Elasticsearch VS ClickHouse

Se7en

SpringBoot 中的事务处理

xcbeyond

事务 springboot 8月日更

为什么需要数据库连接池

赖猫

MySQL 数据库 后端 连接池

2020-2021京东Java面试真题解析

Geek_f90455

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析

Geek_f90455

Java 程序员 后端

Java集合类、Skip列表以及Google_Java_Scott Delap_InfoQ精选文章