从嵌套集合中过滤对象?

filter the objects from nested collection?

DeviceType.java

private String Id;
private List<DeviceTelemetry> telemetries = new ArrayList<>()
//Getter Setter

DeviceTelemetry.java(枚举Class)

private String name;
private String description;
//Getter Setter

我想获取所有 DeviceType Id ,其中有 DeviceTelemetry name 以“System”(字符串)开头。

我做了这样的事情:-

List<DeviceType> filteredStartWithDeviceType =deviceTypes.stream().
             filter(f -> f.getTelemetries().stream()
             .anyMatch(g -> g.getName().startsWith("System"))).collect(Collectors.toList());

谁能告诉我如何从中得到 DeviceType Id

您只需要 mapDeviceTypeString

的值
List<String> filteredStartWithDeviceType = deviceTypes.stream()
    .filter(f -> f.getTelemetries().stream()
             .anyMatch(g -> g.getName().startsWith("System")))
    .map(DeviceType::getId) // or .map(dt -> dt.getId()) if you prefer this syntax
    .collect(Collectors.toList());