作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些代码可以按照我想要的方式工作:
private Map<Florist, EnumSet<Flower>> localMethod(List<FlowerSellers> branchList) {
Map<Florist, EnumSet<Flower>> availableFlowers = new EnumMap<>(Florist.class);
branchList.stream()
.filter(f -> f instanceof FlorestFranchised)
.forEach(f -> availableFlowers.put(
FlorestHelperClass.florestTypeForKey(f.id()),
((FlorestFranchised) f).getFlowers()));
return availableFlowers;
}
为了论证,辅助类方法是:
public static Florist FlorestTypeForKey(String id) {
return FLOREST_MAP.get(id);
}
我想与 Collection 家一起做这件事,所以我想这样做......
return branchList.stream()
.filter(p -> p instanceof FlorestFranchised)
.map(p -> (FlorestFranchised) p)
.collect(Collectors.toMap(
FlorestFranchised::getId,
FlorestFranchised::getFlowers));
但显然这会失败,因为它没有进行辅助类查找,因此它不是返回
但这失败了:
return branchList.stream()
.filter(p -> p instanceof FlorestFranchised)
.map(p -> (FlorestFranchised) p)
.collect(Collectors.toMap(
FlorestHelperClass.florestTypeForKey(FlorestFranchised::getId),
FlorestFranchised::getFlowers));
谁能告诉我应该如何调用收集器中的查找方法(FlorestHelperClass.florestTypeForKey)
?可能吗?
最佳答案
Collectors.toMap
需要两个函数,分别根据传递到 collect
方法的值创建键和值。因此你可以这样做:
return branchList.stream()
.filter(p -> p instanceof FlorestFranchised)
.map(p -> (FlorestFranchised) p)
.collect(Collectors.toMap(
p -> FlorestHelperClass.florestTypeForKey(p.getId()), // key
p -> p.getFlowers() // value
));
最后一个 lambda 表达式可以替换为 FlorestFranchished::getFlowers
。
关于java - 如何从 Java 8 Streaming 中的收集器中调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63231342/
我是一名优秀的程序员,十分优秀!