gpt4 book ai didi

List 内的 Java 过滤器映射
转载 作者:行者123 更新时间:2023-11-30 02:41:55 27 4
gpt4 key购买 nike

我在这里遇到了一些问题,似乎找不到解决方案。

我有一个对象列表,其中包含字符串 Object2 的映射。对象2本身包含一个String的Map,String

如何对其进行排序以最终得到一个包含 Map String, Object2 的列表,仅包含 Map String, String 不为空的条目?

这是我到目前为止得到的:

 list.stream()
.filter(i -> i.getServices().entrySet().stream()
.filter(c -> c.getValue() != null))
.collect(Collectors.toList());

但是这会导致以下错误:

Type mismatch: cannot convert from Stream<Map.Entry<String,Object>> to boolean

整个早上我都在努力解决这个问题。如果有人能在这里帮助我,我将非常感激。提前致谢!

使用平面 map ,我最终得到了所需的 map 列表,但丢失了父类(super class),如下所示:

         List<Entry<String, Service>> a = list.stream()
.flatMap(cus -> cus.getServices().entrySet().stream())
.filter(service -> service.getValue() != null)
.collect(Collectors.toList());

编辑:澄清:第一个对象:

public class Subscription {
...
public Map <String, Service> services;
}

第二个对象:

public class Service {

...
private Map<String, String> params;

}

“params”是需要过滤的内容。

最佳答案

正如错误所示,您的 lambda 正在返回一个流,这是当您需要返回 boolean 时调用 filter 的结果。我不确定类型,但我认为这或多或少是您想要的:

      List<Subscription> foo = list.stream()
.map(s -> s.services.entrySet().stream()
.filter(x -> x.getValue() != null)
.collect(Collectors.toMap(
Map.Entry::getKey, Map.Entry::getValue)))
.map(m -> new Subscription(m))
.collect(Collectors.toList());

关于List<Object> 内的 Java 过滤器映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439664/

27 4 0