Skip to content

Commit b4f79a5

Browse files
committed
Add $.groupBy(iterator, function, binaryOperator) method for chain.
1 parent d025ca0 commit b4f79a5

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/main/java/com/github/underscore/$.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2274,6 +2274,11 @@ public <F> Chain<Map<F, List<T>>> groupBy(final Function<T, F> func) {
22742274
return new Chain<Map<F, List<T>>>($.groupBy(list, func));
22752275
}
22762276

2277+
public <F> Chain<Map<F, Optional<T>>> groupBy(final Function<T, F> func,
2278+
final BinaryOperator<T> binaryOperator) {
2279+
return new Chain<Map<F, Optional<T>>>($.groupBy(list, func, binaryOperator));
2280+
}
2281+
22772282
public Chain<Map<Object, List<T>>> indexBy(final String property) {
22782283
return new Chain<Map<Object, List<T>>>($.indexBy(list, property));
22792284
}

src/test/java/com/github/underscore/CollectionsTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,6 +1519,19 @@ public Double apply(Double a, Double b) {
15191519
}
15201520
});
15211521
assertEquals("{1.0=Optional.of(1.3), 2.0=Optional.of(4.5)}", resultObj.toString());
1522+
final Map<Double, Optional<Double>> resultChain =
1523+
$.chain(asList(1.3, 2.1, 2.4)).groupBy(
1524+
new Function<Double, Double>() {
1525+
public Double apply(Double num) {
1526+
return Math.floor(num);
1527+
}
1528+
},
1529+
new BinaryOperator<Double>() {
1530+
public Double apply(Double a, Double b) {
1531+
return a + b;
1532+
}
1533+
}).item();
1534+
assertEquals("{1.0=Optional.of(1.3), 2.0=Optional.of(4.5)}", resultChain.toString());
15221535
}
15231536

15241537
/*

0 commit comments

Comments
 (0)