| 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. |