相关疑难解决方法(0)

我在哪里可以找到基于Trie的标准Map实现?

我有一个Java程序,它存储了很多从Strings到各种对象的映射.

现在,我的选择是依赖哈希(通过HashMap)或二进制搜索(通过TreeMap).我想知道在流行的高质量馆藏图书馆中是否有一个高效且标准的基于trie的地图实施?

我过去曾写过自己的文章,但如果可以的话,我宁愿选择标准的东西.

快速说明:虽然我的问题很普遍,但在当前项目中,我处理的是大量数据,这些数据由完全限定的类名或方法签名索引.因此,有许多共享前缀.

java algorithm optimization trie

73
推荐指数
4
解决办法
4万
查看次数

HashMap <String,Integer>搜索密钥的一部分?

我目前正在使用HashMap<String, Integer>哪种类型的键充满了String,比方说,5个字符长.我如何搜索4个或更少的特定键,这是其他键的一部分和开头,并将所有命中作为一个集合<Key, Value>

java search hashmap

17
推荐指数
2
解决办法
5万
查看次数

Trie节省空间,但如何?

我很困惑Trie实现如何以最紧凑的形式节省空间并存储数据!

如果你看下面的树.在任何节点上存储字符时,还需要存储对该字符的引用,因此对于存储其引用所需的字符串的每个字符.好的,我们在公共角色到达时节省了一些空间,但是在存储对该角色节点的引用时我们失去了更多的空间.

那么维护这棵树本身是不是有很多结构开销呢?相反,如果使用TreeMap代替这个,让我们说实现一个字典,这可以节省更多的空间,因为字符串将被保存在一个片段中因此没有浪费存储引用的空间,不是吗?

在此输入图像描述

c++ java collections trie guava

13
推荐指数
4
解决办法
4135
查看次数

从java中的HashMap返回通配符匹配列表

我有一个Hashmap,可能在String中包含通配符(*).

例如,

HashMap<String, Student> students_;
Run Code Online (Sandbox Code Playgroud)

可以将约翰*作为一把钥匙.我想知道JohnSmith是否匹配student_中的任何元素.我的字符串可能有几个匹配(John*,Jo*Smith等).有什么方法可以从我的HashMap中获取这些匹配的列表吗?

是否有另一个我可以使用的对象,它不需要我遍历我的集合中的每个元素,或者我是否必须将它吸收并使用List对象?

仅供参考,我的收藏品中将包含少于200个元素,最终我希望找到与最少量通配符匹配的对.

java string wildcard hashmap

10
推荐指数
1
解决办法
8896
查看次数

在(哈希)映射中搜索上一个最接近的日期/字符串

我遇到了一个问题,我需要重新设计我的数据结构.

现在我按时间顺序有很多信息,并将其保存在Hashmap中,其中key date也是其成员new Info().

hashMap.put(date.toString(), new Info(date, ...))

日期间隔为5分钟

2012-02-15 22:45:00.0
2012-02-15 22:50:00.0
2012-02-15 22:55:00.0
2012-02-15 23:00:00.0
...
2012-02-25 12:10:00.0
2012-02-25 12:15:00.0

到目前为止,通过获取密钥并且速度是恒定时间很容易获得信息
hashMap.get(date.toString())

到目前为止,当我从那里的hashmap获取日期时这么好.但现在信息时间顺序可能存在差距.在下面的例子中有缺失2012-02-15 22:50:00.0所以当搜索那个日期时我会得到NPE.
在那种情况下,我必须找到以前最接近的时间.

2012-02-15 22:45:00.0
2012-02-15 22:55:00.0
2012-02-15 23:00:00.0 ...

if (hashMap.get(date.toString()) != null) {
   // found it
} else {
   return previousTime(date.toString())
}
Run Code Online (Sandbox Code Playgroud)

我可以创建一个LinkedHashMap,previousTime可以迭代集合,直到我找到最接近的上一个日期.但最糟糕的情况是O(n)复杂性.是否可以为这种任务提供更好的数据结构,或者只使用LinkedHashMap?的SortedMap喜欢这里?但是最初的put代价很高,需要更多的内存.

java map data-structures

0
推荐指数
1
解决办法
460
查看次数