0

我有一个这样的 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-每组-in-sql/ )

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

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

3 回答 3

0

如果你想要排序记录,我更喜欢 TreeMap。

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

键:整数

值:id_info_type如果它是字符串,则选择字符串。

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

无需关心 Map 会处理的重复项。

于 2012-06-07T11:42:12.740 回答
0

而不是 list ,将它们放在以 userid 作为键的 hashmap 中。

于 2012-06-07T11:20:49.230 回答
0

我建议您在创建List以下内容时进行操作

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

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

于 2012-06-07T11:28:13.827 回答