java-8 - 如何通过 Java 8 中的一些常见属性目录从列表中对对象进行分组
问题描述
我一直在努力解决我的数据列表之一的问题,因为生成它后的要求之一是通过一些常见参数(超过 1 个)对其中的一些进行分组
最后我应该得到一张地图,其中的值是一个常见对象的列表。例如。
List<Cause> listToGroup = new ArrayList<>();
listToGroup.add(Similar);
listToGroup.add(Common);
listToGroup.add(Similar);
listToGroup.add(Similar);
listToGroup.add(Common);
以一种奇怪的方式来表示一个组(Similar)和另一个组(Common),它们应该分成两个不同的列表(该列表是由对其他方法的请求生成的,在这种情况下,我只是手动添加以显示可以是列表中包含的数据)。我的主要问题是对它们进行分组的标准,因为它基于一组共享的参数,但不是全部(如果所需的参数相等,则应属于同一个列表)在下面显示的类中,可以看到这种行为,因为有一些参数没有被考虑。
public class Cause extends GeneralDomain {
//parameters which must be equals between objects
private Long id;
private Date creationDate;
private Part origin;
private Part destination;
//parameters which are not required to be equal
private BigDecimal value
private Stage stageEvent
//omitted getters and setters
}
我一直在看到 Java 8 中提供的比较器方法和 groupingBy 方法,但目前我只知道如何执行该任务,只考虑一个参数(例如按 id 分组)而且我不知道如何分组他们使用多个参数。
//this should be the code if the requirement would be just one parameter to groupby, but in my case are more than one.
Map<Long, List<Cause>> result = request.getList(criteria)
.stream()
.map(p -> parsin.createDto(p))
.collect(groupingBy(Cause ::getId));
我会很高兴有任何建议。如果我的解释不清楚,我很抱歉。这变得如此复杂以至于我都难以解释
解决方案
推荐阅读
- swift - 在标头中发送令牌以进行密钥授权,但始终获得 401 以获取 api swift
- twilio - 从 https://eventgw.twilio.com/v2/EndpointMetrics 偶尔获得 403
- openapi - 如何使 tokenUrl 可配置
- string - 吱吱声(smalltalk)如何将字符串“注入”字符串
- python - Pandas DataFrame 没有属性“is_monotonic_increasing”
- macos - 是否可以在 OS X 的屏幕上获取所有窗口的列表
- scala - udf spark Scala 返回案例类
- node.js - 为什么 break 语句在 else 循环中不起作用,有什么替代方法吗?
- java - Spring Boot Webflux 反应式 API
- javascript - 在Vue中按键交换数组内容