guava包Range操作
Range代表一个区间,它有上限和下限。
比如[1,10],它的意思是这个区间包含大于等于1和小于等于10的所有数。
开区间用中括号标识,闭区间用小括号标识。以下是区间在数学上的定义
(a..b) = {x | a < x < b} [a..b] = {x | a <= x <= b} [a..b) = {x | a <= x < b} (a..b] = {x | a < x <= b} (a..+∞) = {x | x > a} [a..+∞) = {x | x >= a} (-∞..b) = {x | x < b} (-∞..b] = {x | x <= b} (-∞..+∞) = all values
对应区间,guava专门提供了一个Range类来标识,对应于数学上的概念,它有如下方法。
Range type | Method |
---|---|
(a..b) |
open(C, C) |
[a..b] |
closed(C, C) |
[a..b) |
closedOpen(C, C) |
(a..b] |
openClosed(C, C) |
(a..+∞) |
greaterThan(C) |
[a..+∞) |
atLeast(C) |
(-∞..b) |
lessThan(C) |
(-∞..b] |
atMost(C) |
(-∞..+∞) |
all() |
区间常用操作
Range.closed(1, 3).contains(2); // returns true Range.closed(1, 3).contains(4); // returns false Range.lessThan(5).contains(5); // returns false Range.closed(1, 4).containsAll(Ints.asList(1, 2, 3)); // retu
其他操作
Range.closedOpen(4, 4).isEmpty(); // returns true Range.openClosed(4, 4).isEmpty(); // returns true Range.closed(4, 4).isEmpty(); // returns false Range.open(4, 4).isEmpty(); // Range.open throws IllegalArgumentException Range.closed(3, 10).lowerEndpoint(); // returns 3 Range.open(3, 10).lowerEndpoint(); // returns 3 Range.closed(3, 10).lowerBoundType(); // returns CLOSED Range.open(3, 10).upperBoundType(); // returns OPEN
区间直接还可以进行是否包含、交集、并集、是否连接等操作。
有需要了解的key直接看官方文档。这里就不多复述了。