@@ -1046,6 +1046,21 @@ public <K, E> Map<K, Optional<E>> groupBy(
10461046 return groupBy ((Iterable <E >) iterable , func , binaryOperator );
10471047 }
10481048
1049+ public static <K , E > Map <K , E > associateBy (
1050+ final Iterable <E > iterable , final Function <E , K > func ) {
1051+ final Map <K , E > retVal = newLinkedHashMap ();
1052+ for (E e : iterable ) {
1053+ final K key = func .apply (e );
1054+ retVal .putIfAbsent (key , e );
1055+ }
1056+ return retVal ;
1057+ }
1058+
1059+ @ SuppressWarnings ("unchecked" )
1060+ public <K , E > Map <K , E > associateBy (final Function <E , K > func ) {
1061+ return associateBy ((Iterable <E >) iterable , func );
1062+ }
1063+
10491064 @ SuppressWarnings ("unchecked" )
10501065 public static <K , E > Map <K , List <E >> indexBy (
10511066 final Iterable <E > iterable , final String property ) {
@@ -3000,6 +3015,10 @@ public <F> Chain<Map<F, List<T>>> groupBy(final Function<T, F> func) {
30003015 return new Chain <>(Underscore .groupBy (list , func ));
30013016 }
30023017
3018+ public <F > Chain <Map <F , T >> associateBy (final Function <T , F > func ) {
3019+ return new Chain <>(Underscore .associateBy (list , func ));
3020+ }
3021+
30033022 public <F > Chain <Map <F , Optional <T >>> groupBy (
30043023 final Function <T , F > func , final BinaryOperator <T > binaryOperator ) {
30053024 return new Chain <>(Underscore .groupBy (list , func , binaryOperator ));
0 commit comments