gpt4 book ai didi

scala - Scala 中是否有范围数据结构?

转载 作者:行者123 更新时间:2023-12-04 23:41:19 27 4
gpt4 key购买 nike

我正在寻找一种在 Scala 中处理范围的方法。
我需要做的是:

给定一组范围和范围(A)返回范围(B),其中范围(A)与范围(B)相交不为空

给定一组范围和一个范围(A)从/向该组范围删除/添加范围(A)。

给定 range(A) 和 range(B) 创建一个 range(C) = [min(A,B), max(A,B)]

我在java中看到了类似的东西-http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/RangeSet.html
虽然 subRangeSet仅返回相交值,而不返回与它相交的集合(或范围列表)中的范围。

 RangeSet rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closed(0, 10));
rangeSet.add(Range.closed(30, 40));
Range range = Range.closed(12, 32);
System.out.println(rangeSet.subRangeSet(range)); //[30,32] (I need [30,40])
System.out.println(range.span(Range.closed(30, 40))); //[12,40]

最佳答案

有一个Interval[A]输入 spire math library .这允许使用定义 Order 的任意类型范围。 .边界可以是包含的、排除的或省略的。所以例如(-∞, 0.0][0.0, 1.0)将是可能的 double 间隔。

这是一个图书馆intervalset用于处理非重叠区间集( IntervalSeqIntervalTrie )以及区间到任意值的映射( IntervalMap )。

这是一个 related question描述了如何将 IntervalSeq 与 DateTime 一起使用。

请注意,如果您要使用的类型是 64 位或更少(基本上是任何原始类型),则 IntervalTrie 非常快。见 Benchmarks .

关于scala - Scala 中是否有范围数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36863428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com