Author: erans Date: Sat Nov 6 11:38:08 2010 New Revision: 1032010 URL: http://svn.apache.org/viewvc?rev=1032010&view=rev Log: MATH-432 Made "Pair" immutable.
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/Pair.java commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/PairTest.java Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java?rev=1032010&r1=1032009&r2=1032010&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java Sat Nov 6 11:38:08 2010 @@ -1993,8 +1993,8 @@ public final class MathUtils { } final int len = x.length; - final List<Map.Entry<Double, double[]>> list - = new ArrayList<Map.Entry<Double, double[]>>(len); + final List<Pair<Double, double[]>> list + = new ArrayList<Pair<Double, double[]>>(len); final int yListLen = yList.length; for (int i = 0; i < len; i++) { @@ -2009,10 +2009,10 @@ public final class MathUtils { list.add(new Pair<Double, double[]>(x[i], yValues)); } - final Comparator<Map.Entry<Double, double[]>> comp - = new Comparator<Map.Entry<Double, double[]>>() { - public int compare(Map.Entry<Double, double[]> o1, - Map.Entry<Double, double[]> o2) { + final Comparator<Pair<Double, double[]>> comp + = new Comparator<Pair<Double, double[]>>() { + public int compare(Pair<Double, double[]> o1, + Pair<Double, double[]> o2) { int val; switch (dir) { case INCREASING: @@ -2032,7 +2032,7 @@ public final class MathUtils { Collections.sort(list, comp); for (int i = 0; i < len; i++) { - final Map.Entry<Double, double[]> e = list.get(i); + final Pair<Double, double[]> e = list.get(i); x[i] = e.getKey(); final double[] yValues = e.getValue(); for (int j = 0; j < yListLen; j++) { Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/Pair.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/Pair.java?rev=1032010&r1=1032009&r2=1032010&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/Pair.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/Pair.java Sat Nov 6 11:38:08 2010 @@ -16,13 +16,12 @@ */ package org.apache.commons.math.util; -import java.util.Map; - /** * Generic pair. * It is provided as a replacement for the standard * {...@code AbstractMap.SimpleEntry} that is available only in Java 1.6 * and later. + * Immutable class. * * @param <K> Key type. * @param <V> Value type. @@ -30,11 +29,11 @@ import java.util.Map; * @version $Revision$ $Date$ * @since 3.0 */ -public class Pair<K, V> implements Map.Entry<K, V> { +public class Pair<K, V> { /** Key. */ - private K key; + private final K key; /** Value. */ - private V value; + private final V value; /** * Create an entry representing a mapping from the specified key to the @@ -53,7 +52,7 @@ public class Pair<K, V> implements Map.E * * @param entry Entry to copy. */ - Pair(Map.Entry<? extends K, ? extends V> entry) { + Pair(Pair<? extends K, ? extends V> entry) { key = entry.getKey(); value = entry.getValue(); } @@ -77,18 +76,6 @@ public class Pair<K, V> implements Map.E } /** - * Set the value. - * - * @param v Value to be stored. - * @return the old value. - */ - public V setValue(V v) { - V old = value; - value = v; - return old; - } - - /** * Compare the specified object with this entry for equality. * * @param o Object. @@ -99,17 +86,17 @@ public class Pair<K, V> implements Map.E if (o == null) { return false; } - if (!(o instanceof Map.Entry)) { + if (!(o instanceof Pair)) { return false; } else { - Map.Entry<? extends K, ? extends V> ome - = (Map.Entry<? extends K, ? extends V>) o; + Pair<? extends K, ? extends V> oP + = (Pair<? extends K, ? extends V>) o; return (key == null ? - ome.getKey() == null : - key.equals(ome.getKey())) && + oP.getKey() == null : + key.equals(oP.getKey())) && (value == null ? - ome.getValue() == null : - value.equals(ome.getValue())); + oP.getValue() == null : + value.equals(oP.getValue())); } } Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/PairTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/PairTest.java?rev=1032010&r1=1032009&r2=1032010&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/PairTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/PairTest.java Sat Nov 6 11:38:08 2010 @@ -27,10 +27,6 @@ public class PairTest { = new Pair<Integer, Double>(new Integer(1), new Double(2)); Assert.assertEquals(new Integer(1), p.getKey()); Assert.assertEquals(new Double(2), p.getValue(), Math.ulp(1d)); - - final Double old = p.setValue(new Double(3)); - Assert.assertEquals(new Double(2), old, Math.ulp(1d)); - Assert.assertEquals(new Double(3), p.getValue(), Math.ulp(1d)); } @Test @@ -44,11 +40,7 @@ public class PairTest { p1 = new Pair<Integer, Double>(new Integer(1), new Double(2)); Assert.assertFalse(p1.equals(p2)); - Pair<Integer, Number> p3 = new Pair<Integer, Number>(new Integer(1), null); - Assert.assertFalse(p1.equals(p3)); - p3.setValue(new Double(3)); - Assert.assertFalse(p1.equals(p3)); - p3.setValue(new Double(2)); - Assert.assertTrue(p1.equals(p3)); + p2 = new Pair<Integer, Double>(new Integer(1), new Double(2)); + Assert.assertTrue(p1.equals(p2)); } }