ソースを参照

HADOOP-16196. Path Parameterize Comparable.

Author:    David Mollitor <david.mollitor@cloudera.com>
David Mollitor 6 年 前
コミット
246ab77f28

+ 5 - 5
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/Path.java

@@ -40,7 +40,8 @@ import org.apache.hadoop.conf.Configuration;
 @Stringable
 @InterfaceAudience.Public
 @InterfaceStability.Stable
-public class Path implements Comparable, Serializable, ObjectInputValidation {
+public class Path
+    implements Comparable<Path>, Serializable, ObjectInputValidation {
 
   /**
    * The directory separator, a slash.
@@ -490,11 +491,10 @@ public class Path implements Comparable, Serializable, ObjectInputValidation {
   }
 
   @Override
-  public int compareTo(Object o) {
-    Path that = (Path)o;
-    return this.uri.compareTo(that.uri);
+  public int compareTo(Path o) {
+    return this.uri.compareTo(o.uri);
   }
-  
+
   /**
    * Returns the number of elements in this path.
    * @return the number of elements in this path

+ 6 - 7
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/MergeManagerImpl.java

@@ -860,16 +860,15 @@ public class MergeManagerImpl<K, V> implements MergeManager<K, V> {
     }
 
     @Override
-    public int compareTo(Object obj) {
-      if(obj instanceof CompressAwarePath) {
+    public int compareTo(Path obj) {
+      if (obj instanceof CompressAwarePath) {
         CompressAwarePath compPath = (CompressAwarePath) obj;
-        if(this.compressedSize < compPath.getCompressedSize()) {
-          return -1;
-        } else if (this.getCompressedSize() > compPath.getCompressedSize()) {
-          return 1;
-        }
+        int c = Long.compare(this.compressedSize, compPath.compressedSize);
         // Not returning 0 here so that objects with the same size (but
         // different paths) are still added to the TreeSet.
+        if (c != 0) {
+          return c;
+        }
       }
       return super.compareTo(obj);
     }