-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathTriple.java
More file actions
36 lines (28 loc) · 898 Bytes
/
Triple.java
File metadata and controls
36 lines (28 loc) · 898 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package org.psjava.util;
import org.psjava.StrictEqualityTester;
import org.psjava.algo.math.PairHash;
public class Triple<T1, T2, T3> {
public static <T1, T2, T3> Triple<T1, T2, T3> create(T1 v1, T2 v2, T3 v3) {
return new Triple<T1, T2, T3>(v1, v2, v3);
}
public final T1 v1;
public final T2 v2;
public final T3 v3;
public Triple(T1 v1, T2 v2, T3 v3) {
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}
@Override
public boolean equals(Object obj) {
return StrictEqualityTester.areEqual(this, obj, (a, b) -> a.v1.equals(b.v1) && a.v2.equals(b.v2) && a.v3.equals(b.v3));
}
@Override
public int hashCode() {
return PairHash.hash(PairHash.hash(v1.hashCode(), v2.hashCode()), v3.hashCode());
}
@Override
public String toString() {
return "(" + v1 + "," + v2 + "," + v3 + ")";
}
}