Skip to content

Commit 04be989

Browse files
committed
Add support for the object and chain methods to the mean and median.
1 parent ce82388 commit 04be989

File tree

2 files changed

+24
-0
lines changed
  • math-plugin/src

2 files changed

+24
-0
lines changed

math-plugin/src/main/java/com/github/underscore/math/$.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ public Chain(final List<T> list) {
4545
public <T extends Number> Chain<T> sum() {
4646
return new Chain<T>($.sum((List<T>) value()));
4747
}
48+
49+
public Chain<Double> mean() {
50+
return new Chain<Double>($.mean((List<Number>) value()));
51+
}
52+
53+
public Chain<Double> median() {
54+
return new Chain<Double>($.median((List<Number>) value()));
55+
}
4856
}
4957

5058
public static <T> Chain chain(final List<T> list) {
@@ -139,6 +147,10 @@ public static <T extends Number> double mean(final Iterable<T> iterable) {
139147
return result.doubleValue() / count;
140148
}
141149

150+
public double mean() {
151+
return mean((Iterable<Number>) getIterable());
152+
}
153+
142154
public static <T extends Number> double median(final Iterable<T> iterable) {
143155
final List<T> result = newArrayList((Collection) iterable);
144156
final int size = size(iterable);
@@ -148,6 +160,10 @@ public static <T extends Number> double median(final Iterable<T> iterable) {
148160
return (result.get(size / 2 - 1).doubleValue() + result.get(size / 2).doubleValue()) / 2;
149161
}
150162

163+
public double median() {
164+
return median((Iterable<Number>) getIterable());
165+
}
166+
151167
public static void main(String[] args) {
152168
final String message = "Underscore-java-math is a math plugin for underscore-java.\n\n"
153169
+ "For docs, license, tests, and downloads, see: http://javadev.github.io/underscore-java";

math-plugin/src/test/java/com/github/underscore/math/MathTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ public double doubleValue() {
110110
public void mean() {
111111
final Double result = $.mean(asList((double) 0, (double) 0.5, (double) 1));
112112
assertEquals("0.5", result.toString());
113+
final Double resultObj = new $(asList((double) 0, (double) 0.5, (double) 1)).mean();
114+
assertEquals("0.5", resultObj.toString());
115+
final Double resultChain = (Double) $.chain(asList((double) 0, (double) 0.5, (double) 1)).mean().item();
116+
assertEquals("0.5", resultChain.toString());
113117
final Double result2 = $.mean(asList((long) 0, (long) 1, (long) 2));
114118
assertEquals("1.0", result2.toString());
115119
}
@@ -128,6 +132,10 @@ public void mean() {
128132
public void median() {
129133
final Double result = $.median(asList((int) 0, (int) 0, (int) 0, (int) 0, (int) 5));
130134
assertEquals("0.0", result.toString());
135+
final Double resultObj = new $(asList((int) 0, (int) 0, (int) 0, (int) 0, (int) 5)).median();
136+
assertEquals("0.0", resultObj.toString());
137+
final Double resultChain = (Double) $.chain(asList((int) 0, (int) 0, (int) 0, (int) 0, (int) 5)).median().item();
138+
assertEquals("0.0", resultChain.toString());
131139
final Double result2 = $.median(asList((int) 0, (int) 0, (int) 1, (int) 2, (int) 5));
132140
assertEquals("1.0", result2.toString());
133141
final Double result3 = $.median(asList((int) 0, (int) 0, (int) 1, (int) 2));

0 commit comments

Comments
 (0)