阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |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:501304
用户头像

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

关注

评论

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

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频 集成架构 解决方案 智能硬件

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者联盟

安全 数据 加密

谁说AI看不懂视频?

华为云开发者联盟

视频 剪辑

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

Java中的String到底占用多大的内存空间?你所了解的可能都是错误的!!

冰河

Java 内存泄露 string 性能调优 内存溢出

大明湖畔昇腾绽放,趵突泉里智能奔涌

脑极体

设计数据库集群读写分离并非易事

架构师修行之路

分布式 微服务

如果只推荐一本 Python 书,我要 Pick 它!

Python猫

Python 学习 编程 程序员 码农

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

区块链赋能供应链金融|应用优势与四类常见模式

CECBC

区块链

食堂就餐卡系统设计

Griffenliu

关于编码

西贝

Java 编码

架构师训练营第2期-第一周-学习总结

井中人

听说你会缓存?

架构师修行之路

redis 缓存 微服务

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者联盟

开发 IoT stm32

终于,SM2国密算法被Linux内核社区接受了!

阿里云基础软件团队

mongodb源码实现、调优、最佳实践系列-Mongodb网络模块源码实现及性能调优(一)

杨亚洲(专注MongoDB及高性能中间件)

MySQL mongodb 中间件 架构师 分布式数据库mongodb

架构师训练营第 2 期第一周作业

井中人

一致性 hash

garlic

极客大学架构师训练营

epoll服务器解析

菜鸟小sailor 🐕

socket编程

菜鸟小sailor 🐕

websocket

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

微服务的理想与现实

京东科技开发者

云原生

二十一、深入Python强大的装饰器

刘润森

Python

商用密码与区块链共推数字经济发展

CECBC

网络安全 数字经济

如何基于消息中间件实现分布式事务?我想说的都在这儿了!!

冰河

分布式事务 微服务 分布式数据库 数据一致性 海量数据

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