选择java模型列表中具有条件的前n个元素
我有一个MySQL表选择java模型列表中具有条件的前n个元素,java,list,jdbc,top-n,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中,当表很大时,它会非常密集(我尝试了这个解决方案) 在Java中,我查询整个表,并将数据放入列表,其中ModelData是简单的模型,只有getter和setter。最好的办法是什么来去除这个列表,这样在最后我会: id_user id_info 1 54 2 16 3 9
id_user id_info
1 45
1 54
1 12
2 16
2 48
3 94
... ...
对于我的所有用户,我想随机选择n个信息(比如1个),或者选择一个标准。我知道,在纯MySQL中,当表很大时,它会非常密集(我尝试了这个解决方案)
在Java中,我查询整个表,并将数据放入列表
,其中ModelData
是简单的模型,只有getter和setter。最好的办法是什么来去除这个列表,这样在最后我会:
id_user id_info
1 54
2 16
3 94
... ...
将它们放在以userid为键的hashmap中,而不是列表 我建议您在创建
列表时执行以下操作
- 使用
LinkedHashMap
并使用用户id作为键,使用信息id作为值
- 在迭代行时,检查
LinkedHashMap
是否包含该键,如果为false,则插入信息id作为值。如果该键已存在,则使用新键随机更改该值(使用概率为0.5的随机数决策)
最后你会得到你希望得到的结果。如果你想要分类的记录,我宁愿选择树状图
Map records=newtreemap()
键:整数
值:id\u info\u type如果是字符串,则选择字符串
我想这可能对你有帮助
无需担心地图上的重复项。谢谢,我将尝试使用树状图(顺便感谢其他回答者)