stream对比两个list根据字段查询出不同得值

工作需要 要查出来两个list对象得差值 是根据其中一个字段的 正好这段时间再用stream 就试了一下

//需要求相同的只需要把第二行!去掉就行
 List<AlarmComparisonDto> collect = lastWeekHostAlarmNum.stream()
                .filter(item -> !thisWeekHostAlarmNum.stream()
                        .map(e -> e.getHostId())
                        .collect(toList())
                        .contains(item.getHostId()))
                .collect(toList());
        System.err.println(thisWeekHostAlarmNum+"--------thisWeekHostAlarmNum");
        System.err.println(lastWeekHostAlarmNum+"-------------lastWeekHostAlarmNum");
        System.err.println(collect+"-------------collect");

AlarmComparisonDto的也一起放出来吧

/**
 * ClassName: AlarmComparisonDto
 * Description:
 * date: 2022/1/19 10:47
 *
 * @author robotname a
 * @author dev whz
 * @since JDK 1.8
 */
@Data
public class AlarmComparisonDto {

    private Integer restNum;

    private Integer hostId;

    private boolean sort;
}

结果
在这里插入图片描述


[AlarmComparisonDto(restNum=14, hostId=10369, sort=false), AlarmComparisonDto(restNum=1, hostId=10423, sort=false), AlarmComparisonDto(restNum=2, hostId=13213, sort=true)]--------thisWeekHostAlarmNum
[AlarmComparisonDto(restNum=1, hostId=11120, sort=false), AlarmComparisonDto(restNum=1, hostId=11121, sort=false), AlarmComparisonDto(restNum=1, hostId=13213, sort=false)]-------------lastWeekHostAlarmNum
[AlarmComparisonDto(restNum=1, hostId=11120, sort=false), AlarmComparisonDto(restNum=1, hostId=11121, sort=false)]-------------collect

后记 同我们公司大哥说 这么效率比较低 还需要优化 先记录一下 优化之后再后面继续编辑

你可能感兴趣的:(List,java,基础,stream,list,java)