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));
     }
 }


Reply via email to