Java开发中,需求:查出了所有人员表数据,返回PeopleList集合,现在要从前端传入一个维度参数dimension,维度的值可能是职位post,也可能是省份province或者其他维度字段,现在要求用lambda表达式根据传入dimension值进行分组,怎么写
时间: 2024-05-08 16:15:14 浏览: 114
Java8 用Lambda表达式给List集合排序的实现
假设人员表数据的实体类为People,其中包含职位post和省份province两个字段,则可以按照以下方式使用lambda表达式进行分组:
```
List<People> peopleList = ... // 从数据库中查询出所有人员表数据
String dimension = ... // 从前端传入的维度参数值
Map<String, List<People>> groupMap;
if ("post".equals(dimension)) {
groupMap = peopleList.stream().collect(Collectors.groupingBy(People::getPost));
} else if ("province".equals(dimension)) {
groupMap = peopleList.stream().collect(Collectors.groupingBy(People::getProvince));
} else {
// 其他维度字段的分组逻辑
}
List<List<People>> groupList = new ArrayList<>(groupMap.values());
List<People> resultList = new ArrayList<>();
for (List<People> group : groupList) {
resultList.addAll(group);
}
return resultList;
```
上述代码中,首先根据传入的维度参数值使用if语句判断需要按照哪个字段进行分组,然后使用stream流的collect方法和groupingBy方法进行分组,最后将分组结果转换为List<People>类型的结果集返回。
阅读全文