【发布时间】:2011-11-28 11:15:22
【问题描述】:
我有一个可能在字符串中包含通配符 (*) 的 Hashmap。
例如,
HashMap<String, Student> students_;
可以将 John* 作为一个键。我想知道 JohnSmith 是否匹配 students_ 中的任何元素。我的字符串可能有多个匹配项(John*、Jo*Smith 等)。有什么方法可以从我的 HashMap 中获取这些匹配项的列表?
是否有另一个我可以使用的对象不需要我遍历集合中的每个元素,还是我必须把它吸起来并使用 List 对象?
仅供参考,我的集合中的元素将少于 200 个,最终我会想找到与通配符数量最少匹配的对。
【问题讨论】:
-
散列函数的构造方式通常是微小的变化(例如:
John SmitH到John Smith)产生完全不同的散列。 -
为什么不想迭代?这还不错(尤其是少于 200 个元素的情况),最终任何其他解决方案都可能在性能方面涉及类似的东西。
-
在少于 200 个元素的情况下,只需对
entrySet()进行线性搜索,然后根据每个键评估通配符。如果它会更多,我建议使用(嵌入式)数据库和LIKE查询。 -
谢谢你们。这个列表并不大,但我可能不得不经常做。我很好奇是否有更有效的方法来做到这一点,但也许没有
标签: java string hashmap wildcard