从嵌套集合中过滤对象?
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?
您只需要 map
从 DeviceType
到 String
的值
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());
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?
您只需要 map
从 DeviceType
到 String
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());