谷歌集合中是否有不区分大小写的多重映射
我需要一个多映射,其键不区分大小写。谷歌集合中有这样的实现吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要一个多映射,其键不区分大小写。谷歌集合中有这样的实现吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
以下是<的不区分大小写的版本code>ForwardingMap:
使用此映射,您可以使用
MultiMaps
。示例:
警告:
keySet()
将仅返回小写值,无论键是如何输入的。Here is a case insensitive version of a
ForwardingMap
:Using this map, you can create the
MultiMap
using the Supplier methods inMultiMaps
.Example:
Caveat:
keySet()
will return lowercase values only, regardless how the keys were entered.您不能使用
Map>
并给它一个Comparator
来进行不区分大小写的比较吗?看来 Google Collections 和 Apache Collection 框架都没有接受用于评估键相等性的比较器的多重映射。
Couldn't you use a
Map<String,List<Payload>>
and give it aComparator<String>
which did a case-insensitive compare?It appears that neither Google Collections nor Apache Collection frameworks have a multimap that accepts a Comparator for evaluating key equality.
您可以使用
You could define a case-insensitive String Comparator using a Collator. Then create a TreeMultimap with keys sorted by that Comparator.
不,但想必您正在使用字符串键?如果是这样,为什么不规范对常规多重映射的所有访问呢?对于 80% 的情况,这将使所有调用 put 和 gets 小写密钥。
有关不区分大小写的多重映射问题的完整讨论,请参阅 此 Google 群组讨论
No, but presumably you're using String keys? If so, why not just normalise all access to a regular multimap? For the 80% case, that'll be making all calls puts and gets lowercase the key.
For a full discussion of the issues with case-insensitive multimaps, see this google group discussion