gpt4 book ai didi

java - 在 Java TreeMap 中查找元素位置

转载 作者:太空狗 更新时间:2023-10-29 22:38:44 26 4
gpt4 key购买 nike

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

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

每个文件都应该有一个表示它的 vector ,具有以下属性:

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

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

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

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

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

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

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

提前致谢。

补充部分:

dasblinkenlight 提出的解决方案看起来不错,但存在复杂性的问题(由于将键复制到数组中而与字典的维度成线性关系),而且每个文件都这样做的想法是 Not Acceptable 。

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

最佳答案

构建 TreeMap 后,将其排序的键复制到数组中,然后使用 Arrays.binarySearch在 O(logN) 时间内查找索引。如果您需要该值,也可以在原始 map 上进行查找。

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

String[] mapKeys = new String[treeMap.size()];
int pos = 0;
for (String key : treeMap.keySet()) {
mapKeys[pos++] = key;
}

关于java - 在 Java TreeMap 中查找元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com