当前位置: 首页 > 面试题库 >

Java相当于C ++ std :: map吗?

岳正阳
2023-03-14
问题内容

我正在寻找具有C ++ std :: map的通常实现特征的Java类(据我了解,这是一个自平衡二进制搜索树):

  1. 插入/删除/搜索的O(log n)性能
  2. 每个元素均由唯一键和映射值组成
  3. 按键遵循严格的弱顺序

我正在寻找带有开源或设计文档的实现;我可能最终会放弃对原始键/值的支持。

这个问题的风格类似于:std ::
deque的Java等效
,其答案是“ Java Primitive Collections中的ArrayDeque”。


问题答案:

ConcurrentSkipListMap是由跳过列表(具有O(log
n)性能的自平衡树状结构)支持的排序映射。通常,CSLM的边界比TreeMap(这是一个自平衡的红黑树表示)更严格,因此它的性能可能会更好,并且具有线程安全和并发的好处,而TreeMap则没有。在JDK
1.6中添加了CSLM。

Trove有一组原始类型的集合,以及一些常见的Java集合类型的有趣变体。

其他感兴趣的集合库包括Google集合库和Apache
Commons集合。



 类似资料:
  • 问题内容: 是否有与C ++等效的Java Map keySet()? Java 方法返回“此映射中包含的键的设置视图”。 问题答案: 也许以下可能有用: 使用STL兼容序列(例如std :: vector,std :: deque或std :: list)的 make_key_set 函数的重载可以如下所示:

  • 问题内容: 从Java世界进入C#,是否有等效的HashMap?如果没有,您会推荐什么? 问题答案: 可能是最接近的。实现接口(类似于Java的接口)。 您应该注意一些明显的区别: 添加/获取项目 Java的HashMap具有用于设置/获取项目的和方法 C#的词典使用索引来设置/获取项目 键 Java 允许空键 如果您尝试添加空键,.NET会引发 添加重复密钥 Java 将用新值替换现有值。 如果

  • 问题内容: 我正在寻找Java ByteBuffer的“ C ++”。 我可能会丢失明显的内容,或者仅需要一个孤立的用法示例进行澄清。我浏览了iostream家族,它似乎可以提供基础。具体来说,我希望能够: 从字节数组/点构建缓冲区,并从缓冲区获取原语,例如getByte,getInt 使用原语(例如putByte,putInt)构建缓冲区,然后获取字节数组/指针。 问题答案: 您已经拥有,或者可

  • 问题内容: Java是否具有表示一段时间的数据类型,例如34秒,5分钟等。 我已经看到了一些TimeSpan的实现,这些实现涵盖了从12月10日到12月11日这样的时间段。 我需要的是类似C#中的TimeSpan。 问题答案: 目前还不是JDK的一部分,但是将被合并到JDK 7中-尝试Joda Time

  • 以下代码片段适用于Visual Studio 2008,但不适用于Visual Studio 2010。 用法 我得到以下错误: 1个 如果用typedef int MyValueType替换typedef STD::tr1::tuple myvalue type,则有效。 提前感谢您。

  • 假设我有一个数组< code>movies = get_movies() 在ruby中,我经常做或一些事情。 在Java中,我能做些什么类似的事情?同样优雅,简洁和可读。我知道我有很多方法可以做到这一点,但如果有一个很好的方法来做到这一点,这将使我不想使用Groovy或其他东西让我知道。我相信Java有一些很棒的方法来做这样的事情。 这是我迄今为止使用TheMovieDB API Java包装器的