/** * Converts this to a {@link Map}. * * @param f A function that maps an element to a key/value pair represented by Tuple2 * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K extends Comparable<? super K>, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends Tuple2<? extends K, ? extends V>> f) { Objects.requireNonNull(f, "f is null"); return toSortedMap(Comparator.naturalOrder(), f); }
/** * Converts this to a {@link Map}. * * @param keyMapper A function that maps an element to a key * @param valueMapper A function that maps an element to a value * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K extends Comparable<? super K>, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return toSortedMap(t -> Tuple.of(keyMapper.apply(t), valueMapper.apply(t))); }
/** * Converts this to a {@link Map}. * * @param comparator A comparator that induces an order of the Map keys. * @param keyMapper A function that maps an element to a key * @param valueMapper A function that maps an element to a value * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K, V> SortedMap<K, V> toSortedMap(Comparator<? super K> comparator, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(comparator, "comparator is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return toSortedMap(comparator, t -> Tuple.of(keyMapper.apply(t), valueMapper.apply(t))); }
/** * Converts this to a {@link Map}. * * @param f A function that maps an element to a key/value pair represented by Tuple2 * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K extends Comparable<? super K>, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends Tuple2<? extends K, ? extends V>> f) { Objects.requireNonNull(f, "f is null"); return toSortedMap(Comparator.naturalOrder(), f); }
/** * Converts this to a {@link Map}. * * @param keyMapper A function that maps an element to a key * @param valueMapper A function that maps an element to a value * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K extends Comparable<? super K>, V> SortedMap<K, V> toSortedMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return toSortedMap(t -> Tuple.of(keyMapper.apply(t), valueMapper.apply(t))); }
/** * Converts this to a {@link Map}. * * @param comparator A comparator that induces an order of the Map keys. * @param keyMapper A function that maps an element to a key * @param valueMapper A function that maps an element to a value * @param <K> The key type * @param <V> The value type * @return A new {@link TreeMap}. */ default <K, V> SortedMap<K, V> toSortedMap(Comparator<? super K> comparator, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(comparator, "comparator is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return toSortedMap(comparator, t -> Tuple.of(keyMapper.apply(t), valueMapper.apply(t))); }