首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java.util包中是否有可索引的排序列表?

Java.util包中是否有可索引的排序列表?
EN

Stack Overflow用户
提问于 2010-11-23 02:54:05
回答 6查看 3K关注 0票数 19

我正在寻找java.util包中的数据结构。我需要它来满足以下要求:

  • 元素的数量(理论上)是无限的。
  • 元素按升序排序。
  • 您可以获得第n个元素(快速)。
  • 您可以删除第n个元素(快速)。

我希望找到一个可索引的跳过列表,但我没有。他们有满足我所说的要求的数据结构吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-23 03:08:29

不存在满足所有标准的简单数据结构。

据我所知,唯一能满足所有这些要求的就是indexable skip list。Hoewever,我不知道有什么现成的Java实现。

票数 3
EN

Stack Overflow用户

发布于 2010-11-23 03:16:37

Java标准库中没有这样的容器。

当我需要具有这些属性的数据结构时,我使用List实现(通常是ArrayList,但这无关紧要),并且我使用Collections.binarySearch执行所有插入。

如果我必须将排序列表封装为一个可重用的类,我会实现list接口,将所有方法委托给一个“标准”List实现(它甚至可以作为参数传递给构造函数)。我会通过抛出一个异常(UnsupportedOperationException)来实现每个插入方法(add、addAll、set、迭代器的remove),这样就没有人能破坏“always sorted”属性了。最后,我将提供一个使用Collections.binarySearch进行插入的方法insertSorted

票数 5
EN

Stack Overflow用户

发布于 2010-11-23 02:56:52

在向列表中添加元素时,TreeSet为您提供了自然排序功能。但是,如果您不需要这样做,并且允许使用Collections.sort(),那么您可以使用简单的ArrayList

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4249088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档