Sar*_*rah 10 java string wildcard hashmap
我有一个Hashmap,可能在String中包含通配符(*).
例如,
HashMap<String, Student> students_;
Run Code Online (Sandbox Code Playgroud)
可以将约翰*作为一把钥匙.我想知道JohnSmith是否匹配student_中的任何元素.我的字符串可能有几个匹配(John*,Jo*Smith等).有什么方法可以从我的HashMap中获取这些匹配的列表吗?
是否有另一个我可以使用的对象,它不需要我遍历我的集合中的每个元素,或者我是否必须将它吸收并使用List对象?
仅供参考,我的收藏品中将包含少于200个元素,最终我希望找到与最少量通配符匹配的对.
由于哈希函数的原因,不可能使用 hasmap 来实现。它必须分配 的哈希值和等人"John*"的哈希值。"John Smith"相同的值。
如果您编写自己的自定义类WildcardString包装 String,并以返回 0compareTo的方式实现,则可以使用 TreeMap 来实现"John*".compareTo("John Smith")。您可以使用正则表达式来完成此操作,就像其他答案已经指出的那样。
看到您想要通配符匹配的列表,您可以随时删除找到的条目,然后迭代TreeMap.get()。输入完名字后,记得将钥匙放回原处。
这只是实现这一目标的一种可能方法。如果元素少于 200 个,您就可以进行迭代。
更新:为了正确地对 施加顺序,您可以区分比较两个s (意味着它是键之间的比较)和比较 a与 a (将键与搜索值进行比较)TreeSet的情况。WildcardStringWildcardStringString
| 归档时间: |
|
| 查看次数: |
8896 次 |
| 最近记录: |