我是一个来自C++/STL的相对较新的Java程序员,我正在寻找具有这些特性的类(C++ std :: deque具有,据我所知):
是否有Java等同于此?我找到了Java 1.6 [ArrayDeque]类,它具有插入/删除和可增长的特性,但似乎没有按索引查找,除非你调用toArray(),它不是O(1).
在Java中,我们使用了hashCode()和equals()等方法,地图使用这些方法来标识每个对象.C++没有这样的基本方法,默认情况下每个对象都实现.
地图现在如何使用自定义对象作为键值?
编辑:没有重复,因为它特别针对那些特定于Java的接口方法,以前没有用C++做过的人会寻找
我想实现一个类似于 Amazon S3 的查找功能的数据结构。就上下文而言,Amazon S3 将所有文件存储在平面命名空间中,但允许您通过文件名中的公共前缀查找文件组,从而复制目录树的功能,但又不那么复杂。
问题是,查找和过滤操作都是 O(1)(或者足够接近,即使在非常大的存储桶上 - S3 的磁盘等效项 - 两个操作也可能是 O(1)))。
简而言之,我正在寻找一种功能类似于哈希映射的数据结构,并具有高效(至少不是 O(n))过滤的额外好处。我能想到的最好的方法是扩展 HashMap,使其还包含一个(排序的)内容列表,并对与前缀匹配的范围进行二分搜索,然后返回该集合。这对我来说似乎很慢,但我想不出任何其他方法来做到这一点。
有谁知道亚马逊是如何做到的,或者有更好的方法来实现这种数据结构?
Java中是否有任何容器允许我们按键使用迭代器,哪些容器可以同时使用下一个元素和前一个元素(如c ++中的map)?
抱歉我的英语