Skip to content

Commit 3853785

Browse files
committed
remove own interface - BinaryOperator. use java8's
1 parent 749b3ad commit 3853785

File tree

12 files changed

+22
-71
lines changed

12 files changed

+22
-71
lines changed

src/main/java/org/psjava/algo/graph/DistanceCalculatorInRootedTree.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.psjava.ds.graph.RootedTree;
88
import org.psjava.ds.map.MutableMap;
99
import org.psjava.ds.map.MutableMapFactory;
10-
import org.psjava.ds.math.BinaryOperator;
1110
import org.psjava.ds.numbersystrem.AddInvert;
1211
import org.psjava.ds.numbersystrem.AddableNumberSystem;
1312
import org.psjava.ds.tree.segmenttree.SegmentTree;
@@ -58,7 +57,7 @@ public void onWalkUp(E edge) {
5857
}
5958
});
6059

61-
final SegmentTree<W> segmentTree = segmentTreeFactory.create(pathWeights, createAdder(ns));
60+
final SegmentTree<W> segmentTree = segmentTreeFactory.create(pathWeights, ns::add);
6261
final LowestCommonAncestorQuerySession<V> lcaSession = lca.calc(tree);
6362

6463
return new DistanceCalculatorInRootedTreeResult<V, W>() {
@@ -82,12 +81,4 @@ public void modifyDistance(V v1, V v2, W w) {
8281
};
8382
}
8483

85-
private static <T> BinaryOperator<T> createAdder(final AddableNumberSystem<T> ns) {
86-
return new BinaryOperator<T>() {
87-
@Override
88-
public T calc(T d1, T d2) {
89-
return ns.add(d1, d2);
90-
}
91-
};
92-
}
9384
}

src/main/java/org/psjava/algo/sequence/rmq/RangeMinimumQueryUsingSegmentTree.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.psjava.ds.array.PSArray;
66
import org.psjava.ds.array.MutableArray;
77
import org.psjava.ds.array.MutableArrayFactory;
8-
import org.psjava.ds.math.BinaryOperator;
98
import org.psjava.ds.tree.segmenttree.SegmentTree;
109
import org.psjava.ds.tree.segmenttree.SegmentTreeFactory;
1110
import org.psjava.util.Assertion;
@@ -27,11 +26,7 @@ public <T> RangeMinimumQuerySession preprocess(final PSArray<T> a, final Compara
2726
MutableArray<Integer> indexes = MutableArrayFactory.create(a.size(), 0);
2827
for (int i : ZeroTo.get(a.size()))
2928
indexes.set(i, i);
30-
final SegmentTree<Integer> tree = treeFactory.create(indexes, new BinaryOperator<Integer>() {
31-
public Integer calc(Integer i1, Integer i2) {
32-
return RangeMinimumQueryUtil.selectSmallestIndex(a, i1, i2, comp);
33-
}
34-
});
29+
final SegmentTree<Integer> tree = treeFactory.create(indexes, (i1, i2) -> RangeMinimumQueryUtil.selectSmallestIndex(a, i1, i2, comp));
3530
return new RangeMinimumQuerySession() {
3631
public int getIndex(int start, int end) {
3732
Assertion.ensure(start < end);

src/main/java/org/psjava/ds/math/BinaryOperator.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/java/org/psjava/ds/tree/segmenttree/RangeUpdatableSegmentTree.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package org.psjava.ds.tree.segmenttree;
22

33
import org.psjava.ds.array.PSArray;
4-
import org.psjava.ds.math.BinaryOperator;
54
import org.psjava.formula.Power;
65

6+
import java.util.function.BinaryOperator;
7+
78
public class RangeUpdatableSegmentTree<T> implements SegmentTree<T> {
89

9-
public static final <T> RangeUpdatableSegmentTree<T> create(PSArray<T> initialData, BinaryOperator<T> operator) {
10+
public static <T> RangeUpdatableSegmentTree<T> create(PSArray<T> initialData, BinaryOperator<T> operator) {
1011
return new RangeUpdatableSegmentTree<T>(initialData, operator);
1112
}
1213

@@ -21,7 +22,7 @@ public T mergeRangeValue(T oldRangeValue, int rangeSize, T updateData) {
2122

2223
@Override
2324
public T mergeSingleValue(T v1, T v2) {
24-
return operator.calc(v1, v2);
25+
return operator.apply(v1, v2);
2526
}
2627

2728
@Override

src/main/java/org/psjava/ds/tree/segmenttree/SegmentTreeByArrayImplementation.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package org.psjava.ds.tree.segmenttree;
22

33
import org.psjava.ds.array.PSArray;
4-
import org.psjava.ds.math.BinaryOperator;
54
import org.psjava.ds.tree.BinaryTreeByArray;
65
import org.psjava.util.Assertion;
76

7+
import java.util.function.BinaryOperator;
8+
89
/**
910
* This class is for only simple replacement updating. This class has an advantage of BinaryTreeByArray's speed.
1011
*/
@@ -33,7 +34,7 @@ private void construct(int node, PSArray<T> initialData, int start, int end) {
3334
int right = tree.putChild(node, true, any);
3435
construct(left, initialData, start, mid);
3536
construct(right, initialData, mid, end);
36-
tree.setValue(node, merger.calc(tree.getValue(left), tree.getValue(right)));
37+
tree.setValue(node, merger.apply(tree.getValue(left), tree.getValue(right)));
3738
}
3839
}
3940

@@ -53,7 +54,7 @@ private T queryRecursively(int node, int nodeStart, int nodeEnd, int start, int
5354
else if (mid <= start)
5455
return queryRecursively(tree.getRight(node), mid, nodeEnd, start, end);
5556
else
56-
return merger.calc(queryRecursively(tree.getLeft(node), nodeStart, mid, start, mid), queryRecursively(tree.getRight(node), mid, nodeEnd, mid, end));
57+
return merger.apply(queryRecursively(tree.getLeft(node), nodeStart, mid, start, mid), queryRecursively(tree.getRight(node), mid, nodeEnd, mid, end));
5758
}
5859
}
5960

@@ -73,7 +74,7 @@ private void updateRecursively(int node, int nodeStart, int nodeEnd, int positio
7374
updateRecursively(left, nodeStart, mid, position, value);
7475
else
7576
updateRecursively(right, mid, nodeEnd, position, value);
76-
tree.setValue(node, merger.calc(tree.getValue(left), tree.getValue(right)));
77+
tree.setValue(node, merger.apply(tree.getValue(left), tree.getValue(right)));
7778
}
7879
}
7980
}

src/main/java/org/psjava/ds/tree/segmenttree/SegmentTreeFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package org.psjava.ds.tree.segmenttree;
22

33
import org.psjava.ds.array.PSArray;
4-
import org.psjava.ds.math.BinaryOperator;
4+
5+
import java.util.function.BinaryOperator;
56

67
public interface SegmentTreeFactory {
78

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
package org.psjava.formula;
22

3-
import org.psjava.ds.math.BinaryOperator;
3+
import java.util.function.BinaryOperator;
44

55
public class Accumulate {
66

77
public static <T> T calc(Iterable<T> values, T init, BinaryOperator<T> op) {
88
T r = init;
99
for (T v : values)
10-
r = op.calc(r, v);
10+
r = op.apply(r, v);
1111
return r;
1212
}
1313

14-
private Accumulate() {
15-
}
16-
1714
}
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.psjava.formula;
22

3-
import org.psjava.ds.math.BinaryOperator;
3+
import java.util.function.BinaryOperator;
44

55
public class Power {
66

@@ -9,14 +9,11 @@ public static <T> T calc(T value, int n, BinaryOperator<T> operator) {
99
return value;
1010
} else {
1111
T sub = calc(value, n / 2, operator);
12-
T r = operator.calc(sub, sub);
12+
T r = operator.apply(sub, sub);
1313
if (n % 2 == 1)
14-
r = operator.calc(r, value);
14+
r = operator.apply(r, value);
1515
return r;
1616
}
1717
}
1818

19-
private Power() {
20-
}
21-
2219
}
Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,9 @@
11
package org.psjava.formula;
22

3-
import org.psjava.ds.math.BinaryOperator;
43
import org.psjava.ds.numbersystrem.AddableNumberSystem;
54

65
public class Sum {
76
public static <T> T calc(final AddableNumberSystem<T> ns, Iterable<T> iterable) {
8-
return Accumulate.calc(iterable, ns.getZero(), new BinaryOperator<T>() {
9-
@Override
10-
public T calc(T a, T b) {
11-
return ns.add(a, b);
12-
}
13-
});
14-
}
15-
16-
private Sum() {
7+
return Accumulate.calc(iterable, ns.getZero(), ns::add);
178
}
189
}

src/test/java/org/psjava/ds/tree/segmenttree/SegmentTreeByArrayImplementationTest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import org.junit.Test;
55
import org.psjava.ds.array.PSArray;
66
import org.psjava.ds.array.MutableArrayFromVarargs;
7-
import org.psjava.ds.math.BinaryOperator;
87

98
public class SegmentTreeByArrayImplementationTest {
109

@@ -25,11 +24,6 @@ public void testUpdateRecursivelySingle() {
2524

2625
private SegmentTree<Integer> createInitTree() {
2726
PSArray<Integer> init = MutableArrayFromVarargs.create(1, 2, 3, 4, 5, 6, 7, 8);
28-
return new SegmentTreeByArrayImplementation<Integer>(init, new BinaryOperator<Integer>() {
29-
@Override
30-
public Integer calc(Integer a, Integer b) {
31-
return a + b;
32-
}
33-
});
27+
return new SegmentTreeByArrayImplementation<>(init, (a, b) -> a + b);
3428
}
3529
}

0 commit comments

Comments
 (0)