content: package redis.clients.jedis;
  
  import java.util.Arrays;
  
  import redis.clients.util.SafeEncoder;
  
  public class Tuple implements Comparable<Tuple> {
    private byte[] element;
    private Double score;
  
    public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result;
      if (null != element) {
        for (final byte b : element) {
          result = prime * result + b;
        }
      }
      long temp;
      temp = Double.doubleToLongBits(score);
      result = prime * result + (int) (temp ^ (temp >>> 32));
      return result;
    }
  
    public boolean equals(Object obj) {
      if (this == obj) return true;
      if (obj == null) return false;
      if (getClass() != obj.getClass()) return false;
      Tuple other = (Tuple) obj;
      if (element == null) {
        if (other.element != null) return false;
      } else if (!Arrays.equals(element, other.element)) return false;
      return true;
    }
  
    public int compareTo(Tuple other) {
      if (this.score == other.getScore() || Arrays.equals(this.element, other.element)) return 0;
      else return this.score < other.getScore() ? -1 : 1;
    }
  
    public Tuple(String element, Double score) {
      super();
      this.element = SafeEncoder.encode(element);
      this.score = score;
    }
  
    public Tuple(byte[] element, Double score) {
      super();
      this.element = element;
      this.score = score;
    }
  
    public String getElement() {
      if (null != element) {
        return SafeEncoder.encode(element);
      } else {
        return null;
      }
    }
  
    public byte[] getBinaryElement() {
      return element;
    }
  
    public double getScore() {
      return score;
    }
  
    public String toString() {
      return '[' + Arrays.toString(element) + ',' + score + ']';
    }
  }
  