写点什么

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:501439
用户头像

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

关注

评论

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

iStat Menus for Mac(系统活动监控软件)

展初云

Mac软件 iStat Menus

一文解码语言模型:语言模型的原理、实战与评估

EquatorCoco

概念介绍 语言模型

打造“泛”资产管理平台,做企业资产的数智管家

用友BIP

资产管理

第四期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效管理

用友Fast by BIP On天翼云重磅发布,一站式服务大型企业数智化!

用友BIP

天翼云 大型企业数智化速达包

KeyShot 2023.3 Pro for mac(3D渲染和动画制作软件)

展初云

Mac 渲染和动画软件 KeyShot

一图看懂华为云CodeArts Link六大特性

华为云开发者联盟

开发工具 华为云 华为云开发者联盟 华为云CodeArts

跨国企业在数据跨境传输中应该知道的五大要点

镭速

跨境数据传输 数据跨境传输

VideoProc Converter for Mac(多功能视频处理软件) v6.1中文激活版

mac

苹果mac Windows软件 视频处理软件 VideoProc Converter

c#桥接模式详解

EquatorCoco

C# 编程语言 桥接模式 教程分享

DAPP钱包Token质押挖矿系统开发实践

l8l259l3365

动作活体检测能力支持自定义扫描动作,开发者接入更高效

HarmonyOS SDK

HMS Core

在跨境数据传输方面,如何应对跨国企业面临的挑战和风险

镭速

跨境数据传输

守护 C 盘,Python 相关库设置

北桥苏

Python conda anconda

亚马逊云AI大语言模型应用下的创新Amazon Transcribe的使用

淼.

动态IP代理是怎么实现的?

Geek_ccdd7f

三大开源向量数据库大比拼

互联网工科生

向量数据库

软件测试/测试开发丨​利用人工智能ChatGPT批量生成测试数据

测试人

软件测试

解决室内种植最大弊端的是方法—植物生长灯

电子信息发烧客

对话在行人|飞龙汽车:通过业财融合,年节约成本2000多万

用友BIP

LRTimelapse for Mac(延时摄影视频制作)

展初云

Mac软件 lrTimelapse 延时摄影视频制作软件

关于WMS三个核心问题的解读

万界星空科技

选购护眼台灯,全网都没有说清一个关键点!——照度均匀度

电子信息发烧客

如何挑选代理IP

Geek_ccdd7f

超级App的前端框架也可以足够轻量

FN0

前端框架 超级app

python爬虫代理的渠道有哪些

Geek_ccdd7f

合约交易所开发

区块链技术

11月创作挑战赛开启!新奖品、新标准~

Openlab_cosmoplat

代理IP按流量计费贵么?

Geek_ccdd7f

用二维码展示产品,随时查看图文并茂的介绍

草料二维码

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