12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */
2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others.
3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/*
52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
62ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Copyright (C) 2014, International Business Machines Corporation and
72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * others. All Rights Reserved.
82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.impl;
112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * A pair of objects: first and second.
142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param <F> first object type
162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param <S> second object type
17836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller * @hide Only a subset of ICU is exposed in Android
182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic class Pair<F, S> {
202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public final F first;
212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public final S second;
222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected Pair(F first, S second) {
242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        this.first = first;
252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        this.second = second;
262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Creates a pair object
302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param first must be non-null
312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param second must be non-null
322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return The pair object.
332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static <F, S> Pair<F, S> of(F first, S second) {
352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (first == null || second == null) {
362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalArgumentException("Pair.of requires non null values.");
372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new Pair<F, S>(first, second);
392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Override
422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public boolean equals(Object other) {
432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (other == this) {
442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return true;
452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (!(other instanceof Pair)) {
472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        Pair<?, ?> rhs = (Pair<?, ?>) other;
502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return first.equals(rhs.first) && second.equals(rhs.second);
512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Override
542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public int hashCode() {
552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return first.hashCode() * 37 + second.hashCode();
562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller}
58