THRIFT-4713: Review of TBaseHelper
diff --git a/lib/java/src/org/apache/thrift/TBaseHelper.java b/lib/java/src/org/apache/thrift/TBaseHelper.java
index 559df33..6f6c6eb 100644
--- a/lib/java/src/org/apache/thrift/TBaseHelper.java
+++ b/lib/java/src/org/apache/thrift/TBaseHelper.java
@@ -25,10 +25,11 @@
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
-import java.util.SortedSet;
import java.util.TreeMap;
-import java.util.TreeSet;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
public final class TBaseHelper {
@@ -53,57 +54,27 @@
}
public static int compareTo(boolean a, boolean b) {
- return Boolean.valueOf(a).compareTo(b);
+ return Boolean.compare(a, b);
}
public static int compareTo(byte a, byte b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
+ return Byte.compare(a, b);
}
public static int compareTo(short a, short b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
+ return Short.compare(a,b);
}
public static int compareTo(int a, int b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
+ return Integer.compare(a, b);
}
public static int compareTo(long a, long b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
+ return Long.compare(a, b);
}
public static int compareTo(double a, double b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
+ return Double.compare(a, b);
}
public static int compareTo(String a, String b) {
@@ -111,17 +82,16 @@
}
public static int compareTo(byte[] a, byte[] b) {
- int sizeCompare = compareTo(a.length, b.length);
- if (sizeCompare != 0) {
- return sizeCompare;
- }
- for (int i = 0; i < a.length; i++) {
- int byteCompare = compareTo(a[i], b[i]);
- if (byteCompare != 0) {
- return byteCompare;
+ int compare = compareTo(a.length, b.length);
+ if (compare == 0) {
+ for (int i = 0; i < a.length; i++) {
+ compare = compareTo(a[i], b[i]);
+ if (compare != 0) {
+ break;
+ }
}
}
- return 0;
+ return compare;
}
public static int compareTo(Comparable a, Comparable b) {
@@ -129,41 +99,39 @@
}
public static int compareTo(List a, List b) {
- int lastComparison = compareTo(a.size(), b.size());
- if (lastComparison != 0) {
- return lastComparison;
- }
- for (int i = 0; i < a.size(); i++) {
- lastComparison = comparator.compare(a.get(i), b.get(i));
- if (lastComparison != 0) {
- return lastComparison;
+ int compare = compareTo(a.size(), b.size());
+ if (compare == 0) {
+ for (int i = 0; i < a.size(); i++) {
+ compare = comparator.compare(a.get(i), b.get(i));
+ if (compare != 0) {
+ break;
+ }
}
}
- return 0;
+ return compare;
}
public static int compareTo(Set a, Set b) {
- int lastComparison = compareTo(a.size(), b.size());
- if (lastComparison != 0) {
- return lastComparison;
- }
- SortedSet sortedA = new TreeSet(comparator);
- sortedA.addAll(a);
- SortedSet sortedB = new TreeSet(comparator);
- sortedB.addAll(b);
+ int compare = compareTo(a.size(), b.size());
+ if (compare == 0) {
+ ArrayList sortedA = new ArrayList(a);
+ ArrayList sortedB = new ArrayList(b);
- Iterator iterA = sortedA.iterator();
- Iterator iterB = sortedB.iterator();
+ Collections.sort(sortedA, comparator);
+ Collections.sort(sortedB, comparator);
- // Compare each item.
- while (iterA.hasNext() && iterB.hasNext()) {
- lastComparison = comparator.compare(iterA.next(), iterB.next());
- if (lastComparison != 0) {
- return lastComparison;
+ Iterator iterA = sortedA.iterator();
+ Iterator iterB = sortedB.iterator();
+
+ // Compare each item.
+ while (iterA.hasNext() && iterB.hasNext()) {
+ compare = comparator.compare(iterA.next(), iterB.next());
+ if (compare != 0) {
+ break;
+ }
}
}
-
- return 0;
+ return compare;
}
public static int compareTo(Map a, Map b) {
@@ -316,22 +284,14 @@
}
public static byte[] copyBinary(final byte[] orig) {
- if (orig == null) {
- return null;
- }
-
- byte[] copy = new byte[orig.length];
- System.arraycopy(orig, 0, copy, 0, orig.length);
- return copy;
+ return (orig == null) ? null : Arrays.copyOf(orig, orig.length);
}
public static int hashCode(long value) {
- int low = (int) value;
- int high = (int) (value >>> 32);
- return high * 127 + low;
+ return Long.hashCode(value);
}
public static int hashCode(double value) {
- return hashCode(Double.doubleToRawLongBits(value));
+ return Double.hashCode(value);
}
}