// -----------
// Equals.java
// -----------
import java.util.Arrays;
final class Equals {
/**
* O(1) in space
* O(n) in time
*/
public static boolean eval (long[] a, long[] b) {
if (a == b)
return true;
if ((a == null) || (b == null))
return false;
if (a.length != b.length)
return false;
for (int i = 0; i != a.length; ++i)
if (a[i] != b[i])
return false;
return true;}
/**
* O(1) in space
* O(n) in time
*/
public static boolean eval (Object[] a, Object[] b) {
if (a == b)
return true;
if ((a == null) || (b == null))
return false;
if (a.length != b.length)
return false;
for (int i = 0; i != a.length; ++i)
if ((a[i] == null) ? (b[i] != null) : !a[i].equals(b[i]))
return false;
return true;}}
final class EqualsTest {
public static void main (String[] args) {
System.out.println("Equals.java");
{
long[] a = {2, 3, 4};
long[] b = {2, 3, 4};
assert Arrays.equals(a, b);
assert Equals.eval(a, b);
}
{
String[] a = {"abc", "def", "ghi"};
String[] b = {"abc", "def", "ghi"};
assert Arrays.equals(a, b);
assert Equals.eval(a, b);
}
{
String[] a = {"abc", "def", "ghi"};
String[] b = {"abc", "xyz", "ghi"};
assert !Arrays.equals(a, b);
assert !Equals.eval(a, b);
}
{
String[] a = {"abc", null, "ghi"};
String[] b = {"abc", "def", "ghi"};
assert !Arrays.equals(a, b);
assert !Equals.eval(a, b);
}
{
String[] a = {"abc", null, "ghi"};
String[] b = {"abc", null, "ghi"};
assert Arrays.equals(a, b);
assert Equals.eval(a, b);
}
{
Integer[] a = {2, 3, 4};
String[] b = {"abc", "def", "ghi"};
assert !Arrays.equals(a, b);
assert !Equals.eval(a, b);
}
System.out.println("Done.");}}
syntax highlighted by Code2HTML, v. 0.9.1