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