Java 8 按键过滤对象列表。排除列表中的键并获取字符串
Java 8 Stream filter object list by key. Exclude key that are in List & get String
我想从一个列表中排除对象,该对象的 ID 包含在另一个 ID 列表中,并获得一个字段名称字符串。" Care, Safe"
示例:
public interface Selectable {
Long getId();
String getName();
}
我有一个list<Selectable> tenants
id, name
34, "House"
35, "Care"
36, "Villa"
37, "Safe"
还有一个List<Long> idTenantsWithAlerts
id
34
36
我需要结果字符串 tenantsNoAlerts 为 "Care, Safe"
我对 java8 流没有太多经验,所以我尝试了相同的过滤器、映射和缩减……但没有成功。
您可以按 Id
、map
、collect
和 加入收集器 到 来过滤列表将 的 Stream
减少到 String
.
List<Selectable> tenants;
String tenantsNoAlerts = tenants.stream()
.filter(entry -> !idTenantsWithAlerts.contains(entry.getId()))
.map(entry -> entry.getName())
.collect(Collectors.joining(", "));
我想从一个列表中排除对象,该对象的 ID 包含在另一个 ID 列表中,并获得一个字段名称字符串。" Care, Safe"
示例:
public interface Selectable {
Long getId();
String getName();
}
我有一个list<Selectable> tenants
id, name
34, "House"
35, "Care"
36, "Villa"
37, "Safe"
还有一个List<Long> idTenantsWithAlerts
id
34
36
我需要结果字符串 tenantsNoAlerts 为 "Care, Safe"
我对 java8 流没有太多经验,所以我尝试了相同的过滤器、映射和缩减……但没有成功。
您可以按 Id
、map
、collect
和 加入收集器 到 来过滤列表将 的 Stream
减少到 String
.
List<Selectable> tenants;
String tenantsNoAlerts = tenants.stream()
.filter(entry -> !idTenantsWithAlerts.contains(entry.getId()))
.map(entry -> entry.getName())
.collect(Collectors.joining(", "));