Home | History | Annotate | Download | only in impl
      1 /* GENERATED SOURCE. DO NOT MODIFY. */
      2 //  2016 and later: Unicode, Inc. and others.
      3 // License & terms of use: http://www.unicode.org/copyright.html#License
      4 /*
      5  *******************************************************************************
      6  * Copyright (C) 2014, International Business Machines Corporation and
      7  * others. All Rights Reserved.
      8  *******************************************************************************
      9  */
     10 package android.icu.impl;
     11 
     12 /**
     13  * A pair of objects: first and second.
     14  *
     15  * @param <F> first object type
     16  * @param <S> second object type
     17  * @hide Only a subset of ICU is exposed in Android
     18  */
     19 public class Pair<F, S> {
     20     public final F first;
     21     public final S second;
     22 
     23     protected Pair(F first, S second) {
     24         this.first = first;
     25         this.second = second;
     26     }
     27 
     28     /**
     29      * Creates a pair object
     30      * @param first must be non-null
     31      * @param second must be non-null
     32      * @return The pair object.
     33      */
     34     public static <F, S> Pair<F, S> of(F first, S second) {
     35         if (first == null || second == null) {
     36             throw new IllegalArgumentException("Pair.of requires non null values.");
     37         }
     38         return new Pair<F, S>(first, second);
     39     }
     40 
     41     @Override
     42     public boolean equals(Object other) {
     43         if (other == this) {
     44             return true;
     45         }
     46         if (!(other instanceof Pair)) {
     47             return false;
     48         }
     49         Pair<?, ?> rhs = (Pair<?, ?>) other;
     50         return first.equals(rhs.first) && second.equals(rhs.second);
     51     }
     52 
     53     @Override
     54     public int hashCode() {
     55         return first.hashCode() * 37 + second.hashCode();
     56     }
     57 }
     58