项目中需要从海康视频列表取到对应的层级关系,一开始考虑使用递归。后来发现java8的stream表达式就能轻松解决,现在分享一下~
数据库中通过两个code指定父子层级关系
/**
* 现在存在名称相同的情况,需要进行合并处理。
*/
List<String> nameLists = Lists.newLinkedList();
Map<String, List<VideoHaiKangVo>> parentsGroup = finalVideoRegionVos.stream()
.filter(node -> !("-1").equals(node.getParentIndexCode()) )
// 这以下是我的一些业务逻辑 -- 可忽略
.map(videoRegionVo -> {
if ( !("0").equals(videoRegionVo.getTreeCode()) && !nameLists.contains(videoRegionVo.getName())){
CameraHKListVo listVo = showCamera(1, 60, videoRegionVo.getIndexCode());
List<SfReserviorRegionHk> regionRepeatHks = reserviorRegions.stream().filter(sfReserviorRegionHk ->
sfReserviorRegionHk.getName().equals(videoRegionVo.getName())
).collect(Collectors.toList())