Compare two generic parameters
//package com.webex.ta.hydra.util;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* Created by Cisco WebEx.
* User: vegaz
* Date: 2010-10-20
* Time: 15:18:50
*/
public class Comparing {
private Comparing() {
}
public static <T> boolean equal(T arg1, T arg2) {
if (arg1 == null || arg2 == null) {
return arg1 == arg2;
} else if (arg1 instanceof Object[] && arg2 instanceof Object[]) {
Object[] arr1 = (Object[]) arg1;
Object[] arr2 = (Object[]) arg2;
return Arrays.equals(arr1, arr2);
} else if (arg1 instanceof String && arg2 instanceof String) {
return equal((String) arg1, (String) arg2, true);
} else {
return arg1.equals(arg2);
}
}
public static <T> boolean equal(T[] arr1, T[] arr2) {
if (arr1 == null || arr2 == null) {
return arr1 == arr2;
}
return Arrays.equals(arr1, arr2);
}
public static boolean equal(String arg1, String arg2) {
return equal(arg1, arg2, true);
}
public static boolean equal(String arg1, String arg2, boolean caseSensitive) {
if (arg1 == null || arg2 == null) {
return arg1 == arg2;
} else {
return caseSensitive ? arg1.equals(arg2) : arg1.equalsIgnoreCase(arg2);
}
}
public static boolean strEqual(String arg1, String arg2) {
return strEqual(arg1, arg2, true);
}
public static boolean strEqual(String arg1, String arg2, boolean caseSensitive) {
return equal(arg1 == null ? "" : arg1, arg2 == null ? "" : arg2, caseSensitive);
}
public static <T> boolean haveEqualElements(Collection<T> a, Collection<T> b) {
if (a.size() != b.size()) {
return false;
}
Set<T> aSet = new HashSet<T>(a);
for (T t : b) {
if (!aSet.contains(t)) {
return false;
}
}
return true;
}
public static <T> boolean haveEqualElements(T[] a, T[] b) {
if (a == null || b == null) {
return a == b;
}
if (a.length != b.length) {
return false;
}
Set<T> aSet = new HashSet<T>(Arrays.asList(a));
for (T t : b) {
if (!aSet.contains(t)) {
return false;
}
}
return true;
}
public static int hashcode(Object obj) {
return obj == null ? 0 : obj.hashCode();
}
public static int hashcode(Object obj1, Object obj2) {
return hashcode(obj1) ^ hashcode(obj2);
}
public static int compare(int name1, int name2) {
return name1 < name2 ? -1 : name1 == name2 ? 0 : 1;
}
public static <T extends Comparable<T>> int compare(final T name1, final T name2) {
if (name1 == null) return name2 == null ? 0 : -1;
if (name2 == null) return 1;
return name1.compareTo(name2);
}
}
Related examples in the same category