Skip to content

Instantly share code, notes, and snippets.

@bdkosher
Created April 22, 2016 19:13
Show Gist options
  • Save bdkosher/2995e85e29edad2ab008bc655ec4c2f5 to your computer and use it in GitHub Desktop.
Save bdkosher/2995e85e29edad2ab008bc655ec4c2f5 to your computer and use it in GitHub Desktop.
Guava Range Utilities (Java 8)
import com.google.common.collect.Range;
import java.util.function.Function;
public class GuavaRangeUtils {
public static <T extends Comparable<?>, S extends Comparable<?>> Range<S> transformRange(Range<T> range, Function<T, S> transformer) {
if (range == null) {
return null;
}
if (range.hasLowerBound()) {
S lower = transformer.apply(range.lowerEndpoint());
if (range.hasUpperBound()) {
S upper = transformer.apply(range.upperEndpoint());
return Range.range(lower, range.lowerBoundType(), upper, range.upperBoundType());
} else {
return Range.downTo(lower, range.lowerBoundType());
}
} else if (range.hasUpperBound()) {
S upper = transformer.apply(range.upperEndpoint());
return Range.upTo(upper, range.upperBoundType());
} else {
return Range.all();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment