查找 Java TreeMap 中的元素位置

2024-02-06

我正在使用字符串的 TreeMapTreeMap<String, String>,并用它来实现单词词典。

然后,我有一个文件集合,并希望在字典定义的向量空间(单词空间)中创建每个文件的表示。

每个文件应该有一个代表它的向量,具有以下属性:

  • 向量应该与字典具有相同的大小
  • 对于每个单词包含在文件中向量应该有一个1在字典中单词位置对应的位置
  • 对于每个单词不包含在文件中向量应该有一个-1在字典中单词位置对应的位置

所以我的想法是使用Vector<Boolean>来实现这些向量。 (这种表示集合中文档的方式称为布尔模型 -http://www.site.uottawa.ca/~diana/csi4107/L3.pdf http://www.site.uottawa.ca/~diana/csi4107/L3.pdf)

我在创建这个向量的过程中面临的问题是我需要一种方法来查找单词在字典中的位置,如下所示:

String key;
int i = get_position_of_key_in_Treemap(key); <--- purely invented method...

1)有没有类似的方法我可以在TreeMap上使用?如果没有,你能提供一些代码来帮助我自己实现它吗?

2)TreeMap 上是否有一个迭代器(按键的字母顺序排列)我可以获取其位置?

3)最终我应该使用另一个类来实现字典吗?(如果你认为使用TreeMaps我不能做我需要的事情)如果是,哪个?

提前致谢。

添加部分:

dasblinkenlight 提出的解决方案看起来不错,但存在复杂性问题(由于将键复制到数组中,与字典的维度成线性),并且为每个文件执行此操作的想法是不可接受的。

对于我的问题还有其他想法吗?


构建树图后,将其排序键复制到数组中,然后使用Arrays.binarySearch http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#binarySearch%28java.lang.Object%5B%5D,%20java.lang.Object%29在 O(logN) 时间内查找索引。如果您需要该值,也可以在原始地图上查找。

编辑:这是将键复制到数组中的方法

String[] mapKeys = new String[treeMap.size()];
int pos = 0;
for (String key : treeMap.keySet()) {
    mapKeys[pos++] = key;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找 Java TreeMap 中的元素位置 的相关文章

随机推荐