在具有条件的java模型列表中选择前n个元素元素

时间:2012-06-07 11:14:18

标签: java list jdbc top-n

我有一个MySQL表格

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

对于我的所有用户,我想随机选择n个信息(例如,1),或者使用标准。我知道当表格很大时,它在纯MySQL中非常密集(我试过这个解决方案http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

在Java中,我查询整个表,并将数据放在List<ModelData>中,其中ModelData是简单的模型,只有getter和setter。剥离这个列表的最佳方法是什么,所以最后我会:

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

3 个答案:

答案 0 :(得分:0)

而不是列表,将它们放在一个以userid为键的hashmap中。

答案 1 :(得分:0)

我建议您在创建List时执行以下操作

  • 使用LinkedHashMap并使用user_id作为键,使用info_id作为值。
  • 在迭代行时,检查LinkedHashMap是否包含该键,如果为false,则将info_id作为值插入。如果该密钥已经存在,则随机更改该值(使用0.5可能性的随机数决策)。

最后,你最终会得到你所希望的。

答案 2 :(得分:0)

如果你想要Sorted记录我宁愿选择TreeMap。

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

键:整数

值: id_info_type 如果是String,则转到String。

我认为这可能会对你有帮助。

无需关心地图将会照顾的重复项。