代码之家  ›  专栏  ›  技术社区  ›  en Peris

Java 8比较器不工作

  •  -5
  • en Peris  · 技术社区  · 6 年前

    我有一个基本的SpringBoot应用程序。将Spring初始值设定项、JPA、嵌入式Tomcat、thymeleaf模板引擎和包用作可执行JAR文件 我有这段代码来比较pojos,但是比较器似乎不工作,因为lastdeviceEvent和firstdeviceEvent是具有相同ID的同一对象。

    DeviceEvent lastDeviceEvent = null;
            DeviceEvent firstDeviceEvent = null;
    
            try {       
    
                lastDeviceEvent = deviceEvents
                                .stream()
                                .filter (o -> o.getId().equals(deviceId))
                                .sorted(comparing((DeviceEvent de) -> de.getId()).reversed())
                                .findFirst().get();
    
    
    
                firstDeviceEvent = deviceEvents
                        .stream()
                        .filter (o -> o.getId().equals(deviceId)) 
                        .sorted(comparing((DeviceEvent de) -> de.getId()))
                        .findFirst().get();
    
    
                LOG.info("lastDeviceEvent --> " + lastDeviceEvent.getId());
                LOG.info("firstDeviceEvent -> " + firstDeviceEvent.getId());
    
    
            } catch (NoSuchElementException nse) {
    
                throw new AccessDeniedException("403 Forbidden");
    
            }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Mureinik    6 年前

    lastDeviceEvent = deviceEvents
                    .stream()
                    .filter (o -> o.getDeviceId().equals(deviceId)) // Original code used getId()
                    .sorted(comparing((DeviceEvent de) -> de.getId()).reversed())
                    .findFirst()
                    .get();