MCPcopy Create free account
hub / github.com/antlr/codebuff / ImmutableRangeMap

Class ImmutableRangeMap

output/java_guava/1.4.16/ImmutableRangeMap.java:40–378  ·  view source on GitHub ↗

A RangeMap whose contents will never change, with many other important properties detailed at ImmutableCollection. @author Louis Wasserman @since 14.0

Source from the content-addressed store, hash-verified

38
39
40@Beta
41@GwtIncompatible // NavigableMap
42public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K, V>, Serializable {
43 private static final ImmutableRangeMap<Comparable<?>, Object> EMPTY = new ImmutableRangeMap<Comparable<?>, Object>(ImmutableList.<Range<Comparable<?>>>of(), ImmutableList.of());
44
45 /**
46 * Returns an empty immutable range map.
47 */
48
49 @SuppressWarnings("unchecked")
50 public static <K extends Comparable<?>, V> ImmutableRangeMap<K, V> of() {
51 return (ImmutableRangeMap<K, V>) EMPTY;
52 }
53
54 /**
55 * Returns an immutable range map mapping a single range to a single value.
56 */
57
58
59 public static <K extends Comparable<?>, V> ImmutableRangeMap<K, V> of(Range<K> range, V value) {
60 return new ImmutableRangeMap<K, V>(ImmutableList.of(range), ImmutableList.of(value));
61 }
62
63 @SuppressWarnings("unchecked")
64 public static <K extends Comparable<?>, V> ImmutableRangeMap<K, V> copyOf(RangeMap<K, ? extends V> rangeMap) {
65 if (rangeMap instanceof ImmutableRangeMap) {
66 return (ImmutableRangeMap<K, V>) rangeMap;
67 }
68 Map<Range<K>, ? extends V> map = rangeMap.asMapOfRanges();
69 ImmutableList.Builder<Range<K>> rangesBuilder = new ImmutableList.Builder<Range<K>>(map.size());
70 ImmutableList.Builder<V> valuesBuilder = new ImmutableList.Builder<V>(map.size());
71 for (Entry<Range<K>, ? extends V> entry : map.entrySet()) {
72 rangesBuilder.add(entry.getKey());
73 valuesBuilder.add(entry.getValue());
74 }
75 return new ImmutableRangeMap<K, V>(rangesBuilder.build(), valuesBuilder.build());
76 }
77
78 /**
79 * Returns a new builder for an immutable range map.
80 */
81
82
83 public static <K extends Comparable<?>, V> Builder<K, V> builder() {
84 return new Builder<K, V>();
85 }
86
87 /**
88 * A builder for immutable range maps. Overlapping ranges are prohibited.
89 */
90
91
92 public static final class Builder<K extends Comparable<?>, V> {
93 private final RangeSet<K> keyRanges;
94
95 private final RangeMap<K, V> rangeMap;
96
97

Callers

nothing calls this directly

Calls 1

ofMethod · 0.95

Tested by

no test coverage detected