All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.gdface.utils.Pair Maven / Gradle / Ivy

There is a newer version: 3.2.1
Show newest version
package net.gdface.utils;


import java.io.Serializable;

 /**
  * 

A convenience class to represent name-value pairs.

* copy from javafx.util.Pair,and refer to org.apache.commons.lang3.tuple.Pair */ public class Pair implements Serializable{ private static final long serialVersionUID = -4496481498313465718L; /** Left object */ public final L left; /** Right object */ public final R right; //----------------------------------------------------------------------- /** *

Gets the left element from this pair.

* *

When treated as a left-value pair, this is the left.

* * @return the left element, may be null */ public L getLeft(){ return left; } /** *

Gets the right element from this pair.

* *

When treated as a left-value pair, this is the value.

* * @return the right element, may be null */ public R getRight(){ return right; } /** * Gets the left for this pair. * @return left for this pair */ public L getKey() { return getLeft(); } /** * Gets the value for this pair. * @return value for this pair */ public R getValue() { return getRight(); } /** * Creates a new pair * @param key The left for this pair * @param value The value to use for this pair */ public Pair(L key, R value) { this.left = key; this.right = value; } /** *

String representation of this * Pair.

* *

The default name/value delimiter '=' is always used.

* * @return String representation of this Pair */ @Override public String toString() { return left + "=" + right; } /** *

Generate a hash code for this Pair.

* *

The hash code is calculated using both the name and * the value of the Pair.

* * @return hash code for this Pair */ @Override public int hashCode() { // name's hashCode is multiplied by an arbitrary prime number (13) // in order to make sure there is a difference in the hashCode between // these two parameters: // name: a value: aa // name: aa value: a return left.hashCode() * 13 + (right == null ? 0 : right.hashCode()); } /** *

Test this Pair for equality with another * Object.

* *

If the Object to be tested is not a * Pair or is null, then this method * returns false.

* *

Two Pairs are considered equal if and only if * both the names and values are equal.

* * @param o the Object to test for * equality with this Pair * @return true if the given Object is * equal to this Pair else false */ @Override public boolean equals(Object o) { if (this == o) return true; if (o instanceof Pair) { @SuppressWarnings("rawtypes") Pair pair = (Pair) o; if (left != null ? !left.equals(pair.left) : pair.left != null) return false; if (right != null ? !right.equals(pair.right) : pair.right != null) return false; return true; } return false; } /** *

Obtains an pair of from two objects inferring the generic types.

* *

This factory allows the pair to be created using inference to * obtain the generic types.

* * @param the left element type * @param the right element type * @param left the left element, may be null * @param right the right element, may be null * @return a pair formed from the two parameters, not null */ public static Pair of(L left, R right) { return new Pair(left, right); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy