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

选择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

我有一个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 94
... ...

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

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

  • 使用
    LinkedHashMap
    并使用用户id作为键,使用信息id作为值
  • 在迭代行时,检查
    LinkedHashMap
    是否包含该键,如果为false,则插入信息id作为值。如果该键已存在,则使用新键随机更改该值(使用概率为0.5的随机数决策)

最后你会得到你希望得到的结果。

如果你想要分类的记录,我宁愿选择树状图

Map records=newtreemap()

键:整数

值:id\u info\u type如果是字符串,则选择字符串

我想这可能对你有帮助


无需担心地图上的重复项。

谢谢,我将尝试使用树状图(顺便感谢其他回答者)