java中基于属性的对象分组列表
我有POJOjava中基于属性的对象分组列表,java,list,collections,pojo,Java,List,Collections,Pojo,我有POJO列表,我想分组并创建过滤后的列表,如果leavingFrom、goingTo、forwardate、returnDate相同,则将乘客添加到同一对象 例如: Passanger, onWard, return, leavingFrom, goingTo A, 1-2-20, 3-2-20, BLR, PUNE B, 1-2-20 , 3-2
列表
,我想分组并创建过滤后的列表
,如果leavingFrom、goingTo、forwardate、returnDate
相同,则将乘客添加到同一对象
例如:
Passanger, onWard, return, leavingFrom, goingTo
A, 1-2-20, 3-2-20, BLR, PUNE
B, 1-2-20 , 3-2-20, BLR, PUNE
最终列表应包含:
Passanger, onWard, return, leavingFrom, goingTo
A,B 1-2-20 3-2-20 BLR PUNE
公共类TravelRequestDTO{
私人旅客名单;
私人字符串从;
私人字符串去;
私家侦探;
私人时间;
私有字符串返回日期;
私有字符串返回时间;
私有SegmentTypeEnum segmentType;
私有TravelModeEnum travelMode;
私人访问;
}
公营和平{
私有字符串名称;
私弦时代;
私有字符串移动;
}
您可以使用以下代码根据属性获取TravelRequestDTO对象列表
Function<TravelRequestDTO, List<Object>> compositeKey = travelRecord ->
Arrays.<Object>asList(travelRecord.getOnWard(),travelRecord.getReturn(),travelRecord.getLeavingFrom(),travelRecord.getGoingTo());
Map<Object, List<TravelRequestDTO>> map =
people.collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
Function compositeKey=travelRecord->
asList(travelRecord.getForward()、travelRecord.getReturn()、travelRecord.getLeavingFrom()、travelRecord.getGoingTo());
地图=
collect(Collectors.groupingBy(compositeKey,Collectors.toList());
您可以使用以下代码根据属性获取TravelRequestDTO对象列表
Function<TravelRequestDTO, List<Object>> compositeKey = travelRecord ->
Arrays.<Object>asList(travelRecord.getOnWard(),travelRecord.getReturn(),travelRecord.getLeavingFrom(),travelRecord.getGoingTo());
Map<Object, List<TravelRequestDTO>> map =
people.collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
Function compositeKey=travelRecord->
asList(travelRecord.getForward()、travelRecord.getReturn()、travelRecord.getLeavingFrom()、travelRecord.getGoingTo());
地图=
collect(Collectors.groupingBy(compositeKey,Collectors.toList());
,您可以这样做:
Map hashMap=new hashMap();
for(TravelRequestDTO值:initList){
List key=Arrays.asList(value.getForward()、value.getReturn()、value.getLeavingFrom()、value.getGoingTo());
如果(!hashMap.containsKey(键)){
列表=新的ArrayList();
列表。添加(值);
hashMap.put(键,列表);
}否则{
获取(键)、添加(值);
}
}
检查其他解决方案
这只是你想要的一半。之后,您必须从该地图中提取最终结果。或者您可以一步完成:
Map hashMap=new hashMap();
for(TravelRequestDTO值:initList){
List key=Arrays.asList(value.getForward()、value.getReturn()、value.getLeavingFrom()、value.getGoingTo());
如果(!hashMap.containsKey(键)){
TravelRequestDTO item=value;//传递第一个值或将其复制到新值
hashMap.put(键,项);
}否则{
hashMap.get(key.getPassengers().addAll(value.getPassengers());
}
}
列表结果=新的ArrayList(hashMap.values());
,您可以这样做:
Map hashMap=new hashMap();
for(TravelRequestDTO值:initList){
List key=Arrays.asList(value.getForward()、value.getReturn()、value.getLeavingFrom()、value.getGoingTo());
如果(!hashMap.containsKey(键)){
列表=新的ArrayList();
列表。添加(值);
hashMap.put(键,列表);
}否则{
获取(键)、添加(值);
}
}
检查其他解决方案
这只是你想要的一半。之后,您必须从该地图中提取最终结果。或者您可以一步完成:
Map hashMap=new hashMap();
for(TravelRequestDTO值:initList){
List key=Arrays.asList(value.getForward()、value.getReturn()、value.getLeavingFrom()、value.getGoingTo());
如果(!hashMap.containsKey(键)){
TravelRequestDTO item=value;//传递第一个值或将其复制到新值
hashMap.put(键,项);
}否则{
hashMap.get(key.getPassengers().addAll(value.getPassengers());
}
}
列表结果=新的ArrayList(hashMap.values());
你的问题是什么?你如何获得Pax对象,DTO在哪里存储第一位乘客的信息?我猜以前的列表
和以后的列表
名称一定不同。你的问题是什么?你如何获得Pax对象,DTO在哪里存储第一个乘客的信息?我猜前一个列表
和后一个列表
的名称必须不同。感谢您的回答,但我们需要java 1.7的答案。请选择任何一个?请帮助我找到答案,但我们需要java 1.7的答案。有人要吗?帮助me@abhinandanabhinandan然后你可以投票支持这个答案:)@abhinandanabhinandan然后你可以投票支持这个答案:)