给定以下transaction
类的list
,使用Java 8 lambda,我希望获得resultantdto
的list
,每个帐户类型一个。
public class Transaction {
private final BigDecimal amount;
private final String accountType;
private final String accountNumber;
}
public class ResultantDTO {
private final List<Transaction> transactionsForAccount;
public ResultantDTO(List<Transaction> transactionsForAccount){
this.transactionsForAccount = transactionsForAccount;
}
}
到目前为止,我使用以下代码按accountType
对列表
进行分组。
Map<String, List<Transaction>> transactionsGroupedByAccountType = transactions
.stream()
.collect(groupingBy(Transaction::getAccountType));
如何返回列表
,将列表从每个映射键传递到构造函数中,其中包含每个AccountType
中的一个resultantDTo
?
您可以在单流操作中执行此操作:
public List<ResultantDTO> convert(List<Transaction> transactions) {
return transactions.stream().collect(
collectingAndThen(
groupingBy(
Transaction::getAccountType,
collectingAndThen(toList(), ResultantDTO::new)),
map -> new ArrayList<>(map.values())));
}
在这里,CollectingAndthen
使用了两次:一次用于下游的Collector
将列表转换为ResultantDTo
对象,一次用于将结果映射转换为其值的列表。
我有一个对象列表,如下所示: 在<范围内,每天都有一个元素。 我希望能够根据和之间的间隔将这些元素减少到不同的时态分组中。如果和之间的差异大于4年,我希望将它们分组为年。如果差异小于四年,但大于一年,我想把它们分成几个月。如果小于一年,但大于一个月,我想分成几周。任何少于一个月的,不需要分组。 当我说“group”时,我的意思是我想总结属于特定年份的所有东西的元素(使用上面的第一个示例),并为每个
关于元组,上一讲中涉及到了这个名词。本讲完整地讲述它。 先看一个例子: >>>#变量引用str >>> s = "abc" >>> s 'abc' >>>#如果这样写,就会是... >>> t = 123,'abc',["come","here"] >>> t (123, 'abc', ['come', 'here']) 上面例子中看到的变量t,并没有报错,也没有“最后一个有效”,而是将对象做
下课: 我现在有一个,我想将其转换为(应该是)的总和。使这变得困难的是,我想在内部映射中正好有26个条目,其中第26个被称为“其他”,它总结了所有数字低于其他25个的条目。 我得到了以下代码:
我通读了地图和地图分区之间的理论差异, 但我下面描述的问题更多地基于GC活动 = = 提前感谢。任何帮助都将不胜感激。
我正在构建图形ql-javaSpring引导应用程序。假设我有这个模式: 在BE上,我使用的是JOOQ pojos。 当前,所有的foo都被提取,然后对于每个foo,所有的条都通过另一个查询提取。我想通过一个查询来实现这一点: 你知道如何做到这一点吗?我是一个真正的GraphQL新手。 技术堆栈:Spring Boot JOOQ graphql java graphql java工具
主要内容:1. 一对一,2. 一对多,3. 多对一,4. 多对多映射约束 映射约束是一种数据约束,表示通过关系集可以与另一个实体相关的实体的数量。 它在描述涉及两个以上实体集的关系集时最有用。 对于实体集A和B上的二元关系集R,有四种可能的映射基数。这些如下: 一对一(1:1) 一对多(1:M) 多对一(M:1) 多对多(M:M) 1. 一对一 在一对一映射中,E1中的实体与E2中的至多一个实体相关联,并且E2中的实体与E1中的至多一个实体相关联。 2. 一对