📄 pair.java
字号:
/* Copyright (c) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.google.gdata.util.common.base;import java.io.Serializable;/** * Pair is an expedient way to combine two arbitrary objects into one. <b>Its * use is not to be preferred</b> to creating a custom type, but it can be * handy in a pinch. If your {@link #equals}, {@link #hashCode}, * {@link #toString}, and/or {@link #clone} behavior matter to you at all, you * may not want to use this (or you may at least wish to subclass). * * * */public class Pair<A,B> implements Serializable, Cloneable { private static final long serialVersionUID = 747826592375603043L; /** Creates a new pair containing the given objects in order. */ public static <A,B> Pair<A,B> of(A first, B second) { return new Pair<A,B>(first, second); } /** The first element of the pair. */ public final A first; /** The second element of the pair. */ public final B second; /** Cumbersome way to create a new pair (see {@link #of}. */ public Pair(A first, B second) { this.first = first; this.second = second; } /** Optional accessor method for {@link #first}. */ public A getFirst() { return first; } /** Optional accessor method for {@link #second}. */ public B getSecond() { return second; } @Override public Pair<A,B> clone() { try { return (Pair<A,B>) super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(e); } } @Override public boolean equals(Object object) { if (object instanceof Pair<?,?>) { Pair<?,?> other = (Pair<?,?>) object; return eq(first, other.first) && eq(second, other.second); } return false; } @Override public int hashCode() { /* * This combination yields entropy comparable to constituent hashes * and ensures that hash(a,b) != hash(b,a). */ return (hash(first, 0) + 0xDeadBeef) ^ hash(second, 0); } /** * This implementation returns the String representation of this pair in * the form {@code (string1, string2)}, where {@code string1} and * {@code string2} are the {@link Object#toString} representations of the * elements inside the pair. */ @Override public String toString() { return String.format("(%s, %s)", first, second); } private static boolean eq(Object a, Object b) { return a == b || (a != null && a.equals(b)); } private static int hash(Object object, int nullHash) { return (object == null) ? nullHash : object.hashCode(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -