在Java中从地图中检索数据的有效方法

时间:2016-07-14 10:26:55

标签: java dictionary collections

当您有字符串键和sortedSet值的映射时。 SortedSet值可以在不同的键之间重复。假设您的字符串键是您购买杂货或其他东西的日期,然后排序的集合将是您在该日期购买的物品。有没有办法检索有效购买特定商品的日期(即没有遍历每个密钥并通过sortedSet中的每个项目)?

2 个答案:

答案 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