Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/math/IJKey.java @ 1119:7c4f81f74c47
merged gnv-artifacts
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:00 +0200 |
parents | f953c9a559d8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/math/IJKey.java Fri Sep 28 12:14:00 2012 +0200 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2010 by Intevation GmbH + * + * This program is free software under the LGPL (>=v2.1) + * Read the file LGPL.txt coming with the software for details + * or visit http://www.gnu.org/licenses/ if it does not exist. + */ + +package de.intevation.gnv.math; + +import java.io.Serializable; + +/** + * Tuple (i, j) to model a pair of integers. Useful to store index pairs + * in maps. + * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> + */ +public class IJKey +implements Serializable +{ + /** + * i component of the tuple. + */ + public int i; + /** + * j component of the tuple. + */ + public int j; + + /** + * Default constructor. + */ + public IJKey() { + } + + /** + * Constructor to set i and j. + * @param i The i component. + * @param j The j component. + */ + public IJKey(int i, int j) { + this.i = i; + this.j = j; + } + + /** + * Orders i and j by their values. + */ + public void sort() { + if (i > j) { + int t = i; + i = j; + j = t; + } + } + + /** + * Hashes i and j into a common value. + * @return the hash code. + */ + @Override + public int hashCode() { + return (i << 16) | j; + } + + /** + * IJKeys are considered equal if the i and j components + * are equal. + * @param obj The other IJKey + * @return true if the IJKeys are equal else false. + */ + @Override + public boolean equals(Object obj) { + if (!(obj instanceof IJKey)) { + return false; + } + IJKey other = (IJKey)obj; + return i == other.i && j == other.j; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :