- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个代码来处理不同省份不同城市的山间小屋。我正在尝试计算每个海拔范围内单个山间小屋中可用的最大床位数量。如果山间小屋的海拔不可用,我会使用其城市的海拔高度。我希望我的方法返回 Map<String, Optional<Integer>>
但我得到了 Map <String , Optional<MountainHut>>
。现在我意识到我得到的可选实际上是拥有最大床位数量的可选,但我正在努力获取正确的数据类型。
public Map<String, Optional<Integer>> maximumBedsNumberPerAltitudeRange()
{
return this.getMountainHuts().stream()
.collect(
Collectors.groupingBy((MountainHut mountainHut) ->
this.getAltitudeRange(
mountainHut.getAltitude().orElse(mountainHut.getMunicipality().getAltitude())
),
Collectors.maxBy(Comparator.comparing(MountainHut::getBedsNumber))
)
);
}
为了完整起见,我还将发布 getAltitudeRange 方法,其他方法方法只是 setter/getter 。
public String getAltitudeRange(Integer altitude) {
Range r = ranges.stream()
.filter((x) -> altitude>= x.getMin() || altitude <= x.getMax())
.findFirst()
.orElse(new Range(0,Integer.MAX_VALUE));
ranges.stream().close();
if(r.getMax() == Integer.MAX_VALUE)
{
return (0 +" - "+ "INF");
}
return (r.getMin() + " - " + r.getMax());
}
海拔高度是 MountainHut 类的可选属性
正如预期的那样,错误消息如下:类型不匹配:无法从 Map> 转换为 map >
最佳答案
maxBy
不会转换,它只是比较。您提取的 key (即床号)是 Comparator
的实现细节,而 maxBy
对此一无所知。
不过,你们实际上非常接近。您只需要在 groupingBy 和 maxBy 之间添加一个中间步骤即可。
public Map<String, Optional<Integer>> maximumBedsNumberPerAltitudeRange()
{
return this.getMountainHuts().stream()
.collect(
Collectors.groupingBy((MountainHut mountainHut) ->
this.getAltitudeRange(
mountainHut.getAltitude().orElse(mountainHut.getMunicipality().getAltitude())
),
Collectors.mapping(MountainHut::getBedsNumber, Collectors.maxBy(Comparator.naturalOrder()))
)
);
}
PS:在流重型类中,您可以添加 import static java.util.stream.Collectors.*
来摆脱样板文件。
关于java - 使用 maxBy() 处理流时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358277/
为什么 var a = Observable.Interval(TimeSpan.FromSeconds(1)) .Publish(); a.Subscribe(o => { Cons
A maxby(list, f) 以对象列表和函数 f 作为参数,这样 f 可应用于任何对象在列表中返回一个数字。然后 maxby 返回 list 中 f(x) 最大的对象 x。 编写类似maxby(
跟进this question我想知道为什么maxBy的 Traversable[T]返回单个值 T而不是 T 的序列(列表或类似的)。这看起来是一个很常见的案例。例如(来自上一个问题): 对于学生名
我想获取属性为最大值的可枚举的所有元素: IEnumerable allOldest = people.GroupBy(p => p.Age) .OrderByDescending(i=>i.
我正在编写一个代码来处理不同省份不同城市的山间小屋。我正在尝试计算每个海拔范围内单个山间小屋中可用的最大床位数量。如果山间小屋的海拔不可用,我会使用其城市的海拔高度。我希望我的方法返回 Map>但我得
我有一个类(class) String和一个 int field 。 public class Data { private String name; private int valu
我正在使用带有 MoreLinq 扩展的 EF5,在生产环境(非常大的数据库)中测试我的程序时,我发现了这一行: var x = db.TheBigTable.MaxBy(x => x.RecordT
Lodash 的 .maxBy 的 JavaScript 等价物是什么?我在 YouTube 上的 minimax 教程中看到了代码 _.maxBy(values, ...)。我不想使用任何外部依赖项
我有一个 SQLite 表,其中混合有整数列和浮点列。我正在尝试获取每列的最大值和最小值。对于整数列,以下代码有效,但在浮点列上使用相同的代码时出现转换错误: let numCats = query{
斯卡拉的Iterable有 maxBy : Finds the first element which yields the largest value measured by function f.
KeyedStream#max(字符串字段) Applies an aggregation that gives the current maximum of the data stream at t
在 C# 10 .Net 6 中新的 MinBy 或 MaxBy 调用之后是否有内联方法来投影属性? double topPriceInList = prices.MaxBy(h => h.High)
我无法编译以下代码(在 onlinegdb 尝试): List> list = Arrays.asList( new Container<>(new Dto("A"),
我正在使用 RandomForestCLassifier 构建模型。这是我的代码, conf = SparkConf() conf.setAppName('spark-nltk') sc = Spar
在 Java Streams 中 - stream.max(Comparator) 之间的区别是什么?和 stream.collect(Collectors.maxBy(Comparator))在性能
我已经在 text classification 上下载了最新更新模板。我创建了一个新应用程序并通过指定应用程序 ID 导入了 stopwords.json 和 emails.json $ pio i
这个问题在这里已经有了答案: Difference between stream.max(Comparator) and stream.collect(Collectors.maxBy(Compar
我是一名优秀的程序员,十分优秀!