我有一个要求,我将以排序的形式从数据库中检索所有记录。这些记录将按" EnteredIds"进行排序。 DB中的字段。我正在完美地获取这些记录。我将这些记录放在Map中。所以我肯定会有我的地图:
<field1, EnteredId1>
<field4, EnteredId1>
<field3, EnteredId1>
<field2, EnteredId1>
<field6, EnteredId2>
<field1, EnteredId2>
<field2, EnteredId2>
其中EnteredId
是排序形式(即1,1,1,1,2,2,2,...)。
现在我想要另一个列表,它将根据EnteredIds
Like
Object1 will contain 4 records having EnteredId = EnteredId1.
Object2 will contain 3 records having EnteredId = EnteredId2.
等等.. 我已经尝试使用Map,但逻辑似乎非常耗费时间并且非常不优化。
请帮忙.. 提前谢谢..
答案 0 :(得分:1)
虽然我仍然不完全理解你的问题,但我会尝试回答它。
我假设您有这样的地图:
field1->id1
field2->id1
field3->id1
field4->id2
...
我进一步假设你想要反过来,即
id1 -> field1, field2, field3
id2 -> field4
...
这可以通过使用Map<Id,List<Field>>
或Google Guava或Apache Commons Collections提供的MultiMap
来实现。
答案 1 :(得分:0)
是否需要以有序的方式保留元素?否则,您可以使用LinkedHashMap
,它只是一个散列映射,它将具有相同键的元素放在链表中。因此,如果使用enteredId1(作为键)添加3个元素,它们将存储在地图相同索引处的链接列表中,这将允许O(1)访问该键。除非您使用相同的密钥存储大量元素,否则这将非常快。您可以阅读更多相关信息here: