diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2015-09-28 22:41:55 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2015-09-28 22:41:55 -0400 |
| commit | f8215c428f0b46b459c59d0783b4bc4dadfc38a3 (patch) | |
| tree | d4891bb1f8d8193dbec02ca46854f86b34085a1c /BJC-Utils2/src/main/java/bjc/utils/data/Pair.java | |
| parent | ebab46a80d665a5e6c175e1dc3eaba47582ea482 (diff) | |
Basic data structure code.
Still importing things from the old project.
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/Pair.java')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/Pair.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java new file mode 100644 index 0000000..14ac52d --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java @@ -0,0 +1,54 @@ +package bjc.utils.data; + +import java.util.function.BiFunction; +import java.util.function.Function; + +/** + * Holds a pair of values of two different types. + * @author ben + * + * @param <L> The type of the thing held on the left (first) + * @param <R> The type of the thing held on the right (second) + */ +public class Pair<L, R> { + public L l; + public R r; + + /** + * Create a new pair that holds two nulls. + */ + public Pair() { + + } + + /** + * Create a new pair holding the specified values. + * @param left The value to hold on the left. + * @param right The value to hold on the right. + */ + public Pair(L left, R right) { + l = left; + r = right; + } + + /** + * Create a new pair by applying the given functions to the left/right. + * Does not change the internal contents of this pair. + * @param lf The function to apply to the left value. + * @param rf The function to apply to the right value. + * @return A new pair containing the two modified values. + */ + public <L2, R2> Pair<L2, R2> apply(Function<L, L2> lf, Function<R, R2> rf) { + return new Pair<L2, R2>(lf.apply(l), rf.apply(r)); + } + + /** + * Collapse this pair to a single value. + * Does not change the internal contents of this pair. + * @param bf The function to use to collapse the pair. + * @return The collapsed value. + */ + public <E> E merge(BiFunction<L, R, E> bf) { + return bf.apply(l, r); + } +} |
