1 package com.github.davidmoten.rx2.util; 2 3 public class Pair<T, S> { 4 5 private final T a; 6 private final S b; 7 8 public Pair(T a, S b) { 9 this.a = a; 10 this.b = b; 11 } 12 13 public static <T, S> Pair<T, S> create(T t, S s) { 14 return new Pair<T, S>(t, s); 15 } 16 17 public T a() { 18 return a; 19 } 20 21 public S b() { 22 return b; 23 } 24 25 public T left() { 26 return a; 27 } 28 29 public S right() { 30 return b; 31 } 32 33 @Override 34 public int hashCode() { 35 final int prime = 31; 36 int result = 1; 37 result = prime * result + ((a == null) ? 0 : a.hashCode()); 38 result = prime * result + ((b == null) ? 0 : b.hashCode()); 39 return result; 40 } 41 42 @Override 43 public boolean equals(Object obj) { 44 if (this == obj) 45 return true; 46 if (obj == null) 47 return false; 48 if (getClass() != obj.getClass()) 49 return false; 50 Pair<?, ?> other = (Pair<?, ?>) obj; 51 if (a == null) { 52 if (other.a != null) 53 return false; 54 } else if (!a.equals(other.a)) 55 return false; 56 if (b == null) { 57 if (other.b != null) 58 return false; 59 } else if (!b.equals(other.b)) 60 return false; 61 return true; 62 } 63 64 @Override 65 public String toString() { 66 StringBuilder builder = new StringBuilder(); 67 builder.append("Pair [left="); 68 builder.append(a); 69 builder.append(", right="); 70 builder.append(b); 71 builder.append("]"); 72 return builder.toString(); 73 } 74 75 public T _1() { 76 return a; 77 } 78 79 public S _2() { 80 return b; 81 } 82 }