当您有字符串键和sortedSet值的映射时。 SortedSet值可以在不同的键之间重复。假设您的字符串键是您购买杂货或其他东西的日期,然后排序的集合将是您在该日期购买的物品。有没有办法检索有效购买特定商品的日期(即没有遍历每个密钥并通过sortedSet中的每个项目)?
答案 0 :(得分:0)
我刚刚在Apache Commons Collections库中阅读。我记得你在使用Collections库时可以有一个双向映射(OrderedBidiMap<K,V>
)。
定义允许在键和值之间进行双向查找的映射。
此扩展Map表示键可以查找值的映射 并且值可以同样容易地查找键。此接口扩展 地图等可以在需要地图的任何地方使用。界面 提供反向地图视图,实现对两个方向的完全访问 BidiMap。
相关文档:How to keep an Javascript object/array ordered while also maintaining key lookups?
该文档还显示了Apache Commons库中提供的两个已知实现,SortedBidiMap<K,V>
和.vs
。
答案 1 :(得分:0)
使用普通SELECT * FROM table1
where (column1=1 OR column2=1 OR column3=1) AND (column4=1 OR column5=1)
,您无法执行任何操作,只需重复按键并在地图的值上调用Map<String,SortedSet>
。
但您可以实现自己的数据结构,该结构更适合您的需求。基本上,只需付出很少的努力,您就可以实现自己的contains
,其内部委托给两个地图 - 一个用于基本日期 - &gt;项目映射,一个用于反向查找索引日期 - &gt;项目。然后,您可以实现所需的所有方法(例如,放置然后将条目放入两个映射中)。
另外,请看一下这个答案:Bidirectional multi-valued map in Java