Made UniqueId a subclass of Bytes.

This commit is contained in:
str4d
2016-02-02 22:00:08 +00:00
committed by akwizgran
parent 0f1dc554bd
commit 5a6ab9bb96
8 changed files with 49 additions and 60 deletions

View File

@@ -1,9 +1,14 @@
package org.briarproject.api;
import java.util.Arrays;
import java.util.Comparator;
/** A wrapper around a byte array, to allow it to be stored in maps etc. */
public class Bytes {
/**
* A wrapper around a byte array, to allow it to be stored in maps etc.
*/
public class Bytes implements Comparable<Bytes> {
public static final BytesComparator COMPARATOR = new BytesComparator();
private final byte[] bytes;
@@ -27,8 +32,26 @@ public class Bytes {
@Override
public boolean equals(Object o) {
if (o instanceof Bytes)
return Arrays.equals(bytes, ((Bytes) o).bytes);
return false;
return o instanceof Bytes && Arrays.equals(bytes, ((Bytes) o).bytes);
}
@Override
public int compareTo(Bytes other) {
byte[] aBytes = bytes, bBytes = other.bytes;
int length = Math.min(aBytes.length, bBytes.length);
for (int i = 0; i < length; i++) {
int aUnsigned = aBytes[i] & 0xFF, bUnsigned = bBytes[i] & 0xFF;
if (aUnsigned < bUnsigned) return -1;
if (aUnsigned > bUnsigned) return 1;
}
return aBytes.length - bBytes.length;
}
public static class BytesComparator implements Comparator<Bytes> {
@Override
public int compare(Bytes a, Bytes b) {
return a.compareTo(b);
}
}
}