【发布时间】:2012-09-17 21:16:21
【问题描述】:
首先,我在发帖之前做了功课搜索。与那里发布的问题相比,我的要求似乎略有不同。
我有一个像ArrayList<ArrayList<Integer>> 这样的矩阵,格式如下
| id1 | id2 | score |
|-----|-----|-------|
| 1 | 3 | 95% |
| 1 | 2 | 100% |
| 1 | 4 | 85% |
| 1 | 5 | 95% |
| 2 | 10 | 80% |
| 2 | 15 | 99% |
我想按列对矩阵进行排序(首先使用分数,然后使用 id1)。我已经以排序方式获得了 id1。这意味着我还需要首先使用 score 对具有相同 id1 的所有记录进行排序,然后使用 id2 对所有记录进行排序。这样做的原因是在每个 id1 中创建 id2 的排名。上述示例的结果将是:
| q_id | d_id | rank | score |
|------|------|------|-------|
| 1 | 2 | 1 | 100% |
| 1 | 3 | 2 | 95% |
| 1 | 5 | 3 | 95% |
| 1 | 4 | 4 | 85% |
| 2 | 15 | 1 | 99% |
| 2 | 10 | 2 | 80% |
如何在 Java 中使用一些内置的集合方法来实现这一点?
【问题讨论】:
-
为什么不使用Guava Collections 中的
Table类型? -
你能详细说明你想要达到的目标吗?
-
您想要桶排序/基数排序的变体。第一个桶是 id1,第二个桶是 id2。
标签: java sorting matrix arraylist multiple-columns