【发布时间】:2018-02-12 18:17:20
【问题描述】:
对不起我的英语!
我有三个List<DTO1>:
List A:
ListA{id=5, userLogin='cdp', count=14}
ListA{id=11452, userLogin='clelonginge', count=7}
ListA{id=11451, userLogin='vdupontinge', count=16}
List B:
ListB{id=5, userLogin='cdp', count=26}
ListB{id=11452, userLogin='clelonginge', count=14}
ListB{id=11451, userLogin='vdupontinge', count=6}
List C:
ListC{id=5, userLogin='cdp', count=29}
ListC{id=11452, userLogin='clelonginge', count=45}
ListC{id=11451, userLogin='vdupontinge', count=75}
我想制作第三个List<DTO2>,其中包含 3 个列表的计数属性值。
这就是我想要的:
List D:
ListD{id=5, userLogin='cdp', countListA=14, countListB=26, countListC=29}
ListD{id=11452, userLogin='clelonginge', countListA=7, countListB=14, countListC=45}
ListD{id=11451, userLogin='vdupontinge', countListA=16, countListB=6, countListC=75}
所以我尝试了不同的方法,比如:
ListC = ListA.stream().map(DTO1::getId).collect(Collectors.toList());
(it gave me the following error:
Error:(475, 98) java: incompatible types: inference variable T has incompatible bounds
equality constraints: org.ocdm.service.dto.DTO2
lower bounds: java.lang.Long
)
或者使用 HashMap 但我没有成功找到解决方案。
编辑:
ListA、ListB 和 ListC 是同一类型。它们的类型为:List<DTO1>。
但列表 D 不同。它的类型是:List<DTO2>.
DTO1 有 3 个属性:id、userLogin 和 count。
DT02有5个属性:id、userLogin、countListA、countListB和countListC。
【问题讨论】:
-
ListA、ListB、ListC是不同的Java类型吗?
-
ListA、ListB 和 ListC 是同一类型。它们的类型为:List
。但 LIst D 不同。它的类型为:List 。 DTO1 有 3 个属性:id、userLogin 和 count。 DT02有5个属性:id、userLogin、countListA、countListB和countListC。 -
我想在这里按照惯例这样做是有意义的,而不是使用流、地图和收集器
-
您的意思是遍历所有列表吗?实际上,我简化了我的示例以便您理解它,但是我的表格有很多行和更多列。所以我认为这会减慢我的申请速度。
-
你知道流的工作原理吗?
ListC = ListA.stream().map(DTO1::getId).collect(Collectors.toList());告诉我你没有。也许先从那里开始?
标签: java list collections hashmap java-stream