我有一个HashMap(字符串,对象)。键是多个唯一ID的组合。我有一个输入,一个字符串,它是键的一部分(一个唯一ID)。我需要使用我拥有的键的那一部分在HashMap中获得值,而不需要在HashMap中迭代数千个值。
我们可以使用HashMap.get()中的任何Regex语句来实现它吗?
我的关键是xxx.yyy.zzz,在这里,xxx.zzz的组合在整个地图中是唯一的。我有xxx和zzz作为输入。另外,对于给定的zzz,我有一组yyy的可能值(可能增加5-6个可能性)。
我现在有两个选择来解决这个问题。
我应该选哪一种?
发布于 2015-10-07 09:41:28
在不迭代条目/键(您不想要的)的情况下,从HashMap检索值的唯一方法是搜索完整的键。
如果需要通过部分密钥进行高效搜索,则应考虑拥有一个HashMap,其密钥就是该部分密钥。
发布于 2015-10-07 09:43:38
不,不可能在HashMap中使用部分键。
使用TreeMap,可以通过希望键的部分前缀来实现这一点,因为它允许您使用tailMap(String key)返回映射中跟随特定键(即密钥部分)的一部分。您仍然需要处理条目,以查看哪些条目与部分密钥匹配。
发布于 2015-10-07 10:08:41
如果您的密钥与xxx.yyy.zzz类似,并且希望使用xxx.*类型的access,则可以考虑使用my MapFilter类。
它允许您获取一个Map并在特定的键前缀上对其进行筛选。这将完成对特定前缀的搜索,并将搜索结果保留到以后。
https://stackoverflow.com/questions/32988832
复制相似问题