Java 如何合并具有相同/公共字段的对象?

Java 如何合并具有相同/公共字段的对象?,java,sorting,map,merge,Java,Sorting,Map,Merge,我有一个要求,我将以排序的形式从数据库中检索所有记录。这些记录将按DB中的“EnteredDS”字段进行排序。我完全可以得到这些记录。我把这些记录放在地图上。因此,我的地图肯定是这样的: <field1, EnteredId1> <field4, EnteredId1> <field3, EnteredId1> <field2, EnteredId1> <field6, EnteredId2> <field1, Ente

我有一个要求,我将以排序的形式从数据库中检索所有记录。这些记录将按DB中的“EnteredDS”字段进行排序。我完全可以得到这些记录。我把这些记录放在地图上。因此,我的地图肯定是这样的:

<field1, EnteredId1> 
<field4, EnteredId1> 
<field3, EnteredId1> 
<field2, EnteredId1> 
<field6, EnteredId2> 
<field1, EnteredId2> 
<field2, EnteredId2> 
等等。。 我尝试过使用Map,但逻辑似乎非常耗时,优化程度也非常低

请帮忙。。
提前感谢。

是否需要以排序方式保存元素?否则,您可以使用
LinkedHashMap
,这只是一个hashmap,它将具有相同键的元素放在一个链接列表中。因此,如果添加3个元素,并使用entered1(作为键),它们将存储在地图相同索引处的链接列表中,这将允许O(1)访问键。这将非常快,除非您将使用相同的键存储大量元素。关于这个问题,你可以多读一点

尽管我仍然不完全理解你的问题,但我会尝试回答你的问题

我想你有一张这样的地图:

field1->id1
field2->id1
field3->id1
field4->id2
...
我进一步假设你想从另一个方向得到它,即

id1 -> field1, field2, field3
id2 -> field4
...

这可以通过使用
Map
或更好的
MultiMap
来实现,后者提供或提供

我不太明白你的例子:你说你在使用地图,但你似乎也有多个相同的键。这对法线贴图不起作用。您的意思是
MultiMap
?您还说映射将按
enteredd
进行排序,这是映射值。我所知道的唯一允许你做类似事情的标准映射是
LinkedHashMap
,它将按插入顺序对条目进行排序,因此必须对值进行排序。你能详细说明你的答案吗?在
Map
中,考虑到我的示例,Id和字段是什么?@adn_295这只是我的懒惰:
Id=enteredd
field
是示例中键的类型(即
field1
field2
等)OK。但是我怎样才能以一种独特的方式将这些
输入到edid
?表示从
映射
,如何获取唯一的
输入的ID
?因为它们是多个记录,具有相同的
EnteredDS
,如示例所示。@adn_295正如我试图指出的:使用反向映射。映射键通常是不同的,因此从
enteredd
映射到字段列表。为了让生活更轻松,使用
MulitMap
。我用另一种方法解决了这个问题,即直接启动查询,这样我将获得所需的o/p。不过谢谢你的帮助谢谢你的回复。。我一定会查一查。
id1 -> field1, field2, field3
id2 -> field4
...