Returns a view of the portion of map whose keys are contained by range. This method delegates to the appropriate methods of NavigableMap (namely NavigableMap#subMap(Object, boolean, Object, boolean) subMap(), NavigableMap#tailMap(Object, boolean) tailMap()
(NavigableMap<K, V> map, Range<K> range)
| 4226 | */ |
| 4227 | |
| 4228 | @Beta |
| 4229 | @GwtIncompatible // NavigableMap |
| 4230 | public static <K extends Comparable<? super K>, V> NavigableMap<K, V> subMap(NavigableMap<K, V> map, Range<K> range) { |
| 4231 | if (map.comparator() != null && map.comparator() != Ordering.natural() |
| 4232 | && range.hasLowerBound() |
| 4233 | && range.hasUpperBound()) { |
| 4234 | checkArgument(map.comparator().compare(range.lowerEndpoint(), range.upperEndpoint()) <= 0, "map is using a custom comparator which is inconsistent with the natural ordering."); |
| 4235 | } |
| 4236 | if (range.hasLowerBound() && range.hasUpperBound()) { |
| 4237 | return map.subMap( |
| 4238 | range.lowerEndpoint(), range.lowerBoundType() == BoundType.CLOSED, |
| 4239 | range.upperEndpoint(), range.upperBoundType() == BoundType.CLOSED); |
| 4240 | } else if (range.hasLowerBound()) { |
| 4241 | return map.tailMap(range.lowerEndpoint(), range.lowerBoundType() == BoundType.CLOSED); |
| 4242 | } else if (range.hasUpperBound()) { |
| 4243 | return map.headMap(range.upperEndpoint(), range.upperBoundType() == BoundType.CLOSED); |
| 4244 | } |
| 4245 | return checkNotNull(map); |
| 4246 | } |
| 4247 | } |
no test coverage detected