Как объединить объекты, имеющие одинаковое / общее поле? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть требование, при котором я получу все записи из БД в отсортированном виде. Эти записи будут отсортированы по полю «EnteredIds» в БД. Я получаю эти записи отлично. Я помещаю эти записи в карту. Так что, конечно, моя карта будет выглядеть так:

<field1, EnteredId1> 
<field4, EnteredId1> 
<field3, EnteredId1> 
<field2, EnteredId1> 
<field6, EnteredId2> 
<field1, EnteredId2> 
<field2, EnteredId2> 

, где EnteredId в отсортированном виде (т. Е. 1,1,1,1,2,2,2, ...). Теперь я хочу другой список, который будет иметь объекты в соответствии с EnteredIds Как

Object1 will contain 4 records having EnteredId = EnteredId1.
Object2 will contain 3 records having EnteredId = EnteredId2.

и так далее .. Я пробовал это с помощью Map, но логика кажется очень много времени и очень менее оптимизирована.

Пожалуйста, помогите .. Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Хотя я все еще не до конца понимаю ваш вопрос, я попытаюсь ответить на него.

Я предполагаю, что у вас есть такая карта:

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

Я далеепредположим, что вы хотите получить его наоборот, то есть

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

Этого можно достичь, используя Map<Id,List<Field>> или лучше MultiMap, что Google Guava или Коллекции Apache Commons предоставляют.

0 голосов
/ 19 марта 2012

Требуется ли хранить элементы в отсортированном виде? В противном случае вы можете использовать LinkedHashMap, который просто является хэш-картой, который помещает элементы с одинаковым ключом в связанный список. Поэтому, если вы добавите 3 элемента с enterId1 (в качестве ключа), они будут сохранены в связанном списке с тем же индексом карты, что позволит O (1) получить доступ к ключу. Это будет очень быстро, если вы не будете хранить много элементов с одним и тем же ключом. Вы можете прочитать немного больше об этом здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...