我有一个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
... ...
答案 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。
我认为这可能会对你有帮助。
无需关心地图将会照顾的重复项。