我知道对于整数,Java 8有IntStream可以生成范围并检查它们。例如:
IntStream range = IntStream.rangeClosed(5,10);
range.anyMatch(x -> x == 4);
我的问题是我有双重范围,定义如下:
Light [0, 3.0)
Moderate [3.0, 6.0)
Vigorous >= 6.0
被检查范围的变量是一个 double val
。我想知道 Java 8 是否有方便的解决方法。我不想使用复杂的 if/else
树,由于种种原因。
IntStream.rangeClosed(5,10)
返回一个流,其中只包含整数5, 6, 7, 8, 9, 10
。如果使用Double
类型的流“range”,您期望得到什么结果?您肯定不希望在端点之间返回_每个可能的Double_吧? - k_ssbIntStream
实际上就是整数值的流。anyMatch
正在检查该范围中的每个值是否与提供的谓词匹配。对于浮点数值,这意味着什么并不清楚。 - Oliver CharlesworthRange getRange(double x){ if(x >= 0 && x < 3) return Range.LIGHT; if(x >= 3 && x < 6) return Range.MODERATE; return Range.VIGOROUS; }
有什么不好的呢?假设您有一个包含上述常量的Range
枚举。 - Ousmane D.