从java中的HashMap返回通配符匹配列表
作者:互联网
我有一个Hashmap,可能在String中包含通配符(*).
例如,
HashMap<String, Student> students_;
可以将约翰*作为一把钥匙.我想知道JohnSmith是否匹配student_中的任何元素.我的字符串可能有几个匹配(John *,Jo * Smith等).有什么方法可以从我的HashMap中获取这些匹配的列表吗?
是否有另一个我可能正在使用的对象,它不需要我遍历我的集合中的每个元素,或者我是否必须将它吸收并使用List对象?
仅供参考,我的收藏品中将包含少于200个元素,最终我希望找到与最少量通配符匹配的对.
解决方法:
由于散列函数,使用hasmap无法实现.它必须分配“John *”的散列和“John Smith”等的散列.相同的价值.
您可以使用TreeMap创建它,如果您编写自己的自定义类WildcardString包装String,并以“John *”.compareTo(“John Smith”)返回0的方式实现compareTo.您可以使用正则表达式来执行此操作other answers已经指出了.
看到你想要widlcard匹配列表,你可以随时删除条目,并迭代TreeMap.get().记得在完成名称后将钥匙放回去.
这只是实现它的一种可能方式.使用少于200个元素,你可以很好地迭代.
更新:要在TreeSet上正确强加顺序,您可以区分比较两个WildcardStrings(意味着它是键之间的比较)和将WildcardString与String(将键与搜索值进行比较)进行比较的情况.
标签:java,string,hashmap,wildcard 来源: https://codeday.me/bug/20191007/1868437.html