不使用stream的方式用java代码实现分组后分组内排序且排名要连续的功能
时间: 2024-02-09 22:11:38 浏览: 80
归并排序.java 使用java代码来实现
可以使用Java中的Collections工具类来实现分组排序和排名连续的功能,并且不使用Stream。以下是一个简单的示例代码:
```java
import java.util.*;
public class GroupSortRank {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 3, 5, 2, 4, 6, 7, 9, 8, 11, 10, 13, 12, 14, 15);
int groupSize = 3;
// 分组
Map<Integer, List<Integer>> groups = new HashMap<>();
int group = 1;
for (int i = 0; i < list.size(); i += groupSize) {
List<Integer> sublist = list.subList(i, Math.min(i + groupSize, list.size()));
groups.put(group++, sublist);
}
// 分组内排序和排名
Map<Integer, Map<Integer, Integer>> ranks = new HashMap<>();
for (Map.Entry<Integer, List<Integer>> entry : groups.entrySet()) {
List<Integer> sublist = entry.getValue();
Collections.sort(sublist);
Map<Integer, Integer> rankMap = new HashMap<>();
int rank = 1;
for (int i = 0; i < sublist.size(); i++) {
rankMap.put(sublist.get(i), rank++);
}
ranks.put(entry.getKey(), rankMap);
}
// 输出结果
for (int i = 0; i < list.size(); i++) {
int num = list.get(i);
int groupNum = (i / groupSize) + 1;
int rank = ranks.get(groupNum).get(num);
System.out.println("Number: " + num + ", Group: " + groupNum + ", Rank: " + rank);
}
}
}
```
在这个示例中,我们将包含15个整数的列表分为大小为3的五个组,然后对每个组进行排序并计算排名。最后,我们按照原始列表中的顺序输出每个数字的分组和排名。注意,我们使用了一个嵌套的HashMap来存储每个数字的排名,其中第一层的键是组号,第二层的键是数字本身。
阅读全文