我上这堂课
class Assignment {
private Integer index;
private List<Quantity> quantities;
}
然后,我有该类对象的列表。
List<Assigment> assignments = new ArrayList<>();
有没有一种方法创建一个Map
包含from Assignment
和List<Quantity>
as值的索引?
到目前为止,这是我尝试过的。
assignments.stream().collect(groupingBy(Assignment::getIndex));
但这给我一个Map<Integer, List<Assignment>>
,我想要一个Map<Integer, List<Quantity>>
。
我已经尝试过使用forEach
方法-它可以工作-但我确定必须有一种方法可以在一个衬里中进行操作-
或者至少仅使用collect
和groupingBy
方法
似乎没有平面映射收集器可groupingBy
在Java8中用作下游,但已被Java9提出并接受:https
://bugs.openjdk.java.net/browse/JDK-8071600
public static <T, U, A, R>
Collector<T, ?, R> flatMapping(Function<? super T, ? extends Stream<? extends U>> mapper,
Collector<? super U, A, R> downstream) {
BiConsumer<A, ? super U> downstreamAccumulator = downstream.accumulator();
return Collector.of(downstream.supplier(),
(r, t) -> mapper.apply(t).sequential().forEach(u -> downstreamAccumulator.accept(r, u)),
downstream.combiner(),
downstream.finisher(),
downstream.characteristics().stream().toArray(Collector.Characteristics[]::new));
}
如果使用该代码,并且还添加了一个返回的quantities
方法,则可以使用以下代码:Assignment``Stream<Quantity>
Map<Integer, List<Quantity>> result = assignments.stream()
.collect(groupingBy(Assignment::getIndex,
flatMapping(Assignment::quantities, toList())));
由于我不想多次使用流来单独收集每个属性,也不想使用来收集每个属性,是否有任何方法可以用单个流来获得上述属性。
问题内容: 如何访问模型的Hibernate映射以找出属性的列名? 列名未在映射中指定,因此Hibernate自动生成它-我想创建一个包含此列名的本机SQL语句。 问题答案: 感谢Jherico,我发现了如何做到这一点:
我有这个简单的Bean类: 在我的主类中,我在列表中添加了一些信息: 现在我想将图书列表转换为以下形式的地图: 因此,输出(上面的地图)如下所示: 因此,我需要按isbn作为关键字和作者作为值对条目进行分组。一个isbn可以有多个作者。 我尝试如下: 不能更改bean的格式。如果bean有字符串值而不是map,我可以这样做,但是要坚持使用map。 我已经写了传统的java 6/7方式来正确地做这件
我正在开发和spring应用程序,对于对象映射,我使用ModelMapper库。 我能够映射基本类映射,但当我尝试映射2个集合元素时,源是一组枚举,具有其他属性,如名称和描述,目标是具有id、名称和描述的pojo。 我已经尝试了类型地图和转换器在映射配置文件,但我得到例外的映射器。 源类来自其他应用程序(其依赖项已在pom.xml中添加)。我也不希望源类型作为目标setter中的参数。 前。 资料
假设我有以下映射目标。 如何从其他属性的Iterable映射到其他属性? 我可以这样做吗?
问题内容: 我正在使用MapStruct库映射对象,但出现此错误: 无法将属性“ java.util.Date aDate”映射到“ javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“ javax.xml.bind.JAXBElement map(java.util.Date value)”。 我的问题:应该在哪里取消此映射方法? 问题答案: 我通过