2012-06-07 3 views
0

У меня есть таблица MySQL как таковойВыбор верхних п элементов элементов в списке Java моделей с критериями

id_user id_info 
1 45 
1 54 
1 12 
2 16 
2 48 
3 94 
... ... 

Для всех моих пользователей, я хочу, чтобы выбрать п информацию случайным образом (например, 1), или с критериями. Я знаю, что это довольно интенсивно в чистом MySQL, если таблица большая (я попробовал это решение http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/)

В Java, я запрашиваю для всей таблицы, и помещает данные в List<ModelData>, где ModelData является простой моделью , только с геттерами и сеттерами. Что было бы лучшим способом лишить этот список так что в конце я бы:

id_user id_info 
1 54 
2 16 
3 94 
... ... 

ответ

0

Если вы хотите Сортированную запись, я бы предпочел пойти на TreeMap.

Map<Integer,id_info_type> records =new TreeMap<Integer, id_info_type>()

Ключ: Integer

Значение: id_info_type если строка идти String.

Я думаю, что это может вам помочь.

Не нужно заботиться о дубликатах, которые будут ухаживать за вами Карта.

+0

Спасибо, я постараюсь пойти с TreeMap (кстати, спасибо другим ответчикам) – Xavier

0

Вместо списка, поместите их в HashMap с идентификатором пользователя в качестве ключа.

0

Я хотел бы предложить вам сделать вашу работу в то время как вы создаете ваш List следующим

  • Используйте LinkedHashMap и использовать user_id в качестве ключа и info_id в качестве значения.
  • Пока вы повторяете свои строки, проверьте, содержит ли ваш LinkedHashMap этот ключ, если false вставляет значение info_id. Если этот ключ уже существует, случайное изменение значения с новым (используйте случайное число с возможностью 0,5).

Наконец-то вы получите то, о чем вы надеетесь.

 Смежные вопросы

  • Нет связанных вопросов^_^