diff --git a/code/libraries/coded-sequence/java/nu/marginalia/sequence/CodedSequence.java b/code/libraries/coded-sequence/java/nu/marginalia/sequence/CodedSequence.java index c22623ca..493e87ee 100644 --- a/code/libraries/coded-sequence/java/nu/marginalia/sequence/CodedSequence.java +++ b/code/libraries/coded-sequence/java/nu/marginalia/sequence/CodedSequence.java @@ -19,4 +19,5 @@ public interface CodedSequence { int bufferSize(); int valueCount(); + } diff --git a/code/libraries/coded-sequence/java/nu/marginalia/sequence/GammaCodedSequence.java b/code/libraries/coded-sequence/java/nu/marginalia/sequence/GammaCodedSequence.java index 8d8097be..bfb3a548 100644 --- a/code/libraries/coded-sequence/java/nu/marginalia/sequence/GammaCodedSequence.java +++ b/code/libraries/coded-sequence/java/nu/marginalia/sequence/GammaCodedSequence.java @@ -7,7 +7,7 @@ import nu.marginalia.sequence.io.BitReader; import nu.marginalia.sequence.io.BitWriter; import java.nio.ByteBuffer; -import java.util.Arrays; +import java.util.Objects; import java.util.StringJoiner; /** A sequence of integers encoded using the Elias Gamma code, @@ -102,11 +102,14 @@ public class GammaCodedSequence implements Iterable, CodedSequence { } public int hashCode() { - return raw.hashCode(); + return values().hashCode(); } - public boolean equals(Object obj) { - return obj instanceof GammaCodedSequence other && Arrays.equals(bytes(), other.bytes()); + public boolean equals(Object other) { + if (other instanceof CodedSequence cs) { + return Objects.equals(values(), cs.values()); + } + return false; } public String toString() { @@ -255,4 +258,6 @@ public class GammaCodedSequence implements Iterable, CodedSequence { } + + } diff --git a/code/libraries/coded-sequence/java/nu/marginalia/sequence/VarintCodedSequence.java b/code/libraries/coded-sequence/java/nu/marginalia/sequence/VarintCodedSequence.java index f3e60400..da98d4ce 100644 --- a/code/libraries/coded-sequence/java/nu/marginalia/sequence/VarintCodedSequence.java +++ b/code/libraries/coded-sequence/java/nu/marginalia/sequence/VarintCodedSequence.java @@ -5,6 +5,7 @@ import it.unimi.dsi.fastutil.ints.IntIterator; import it.unimi.dsi.fastutil.ints.IntList; import java.nio.ByteBuffer; +import java.util.Objects; public class VarintCodedSequence implements CodedSequence { @@ -242,4 +243,15 @@ public class VarintCodedSequence implements CodedSequence { } + + public int hashCode() { + return values().hashCode(); + } + + public boolean equals(Object other) { + if (other instanceof CodedSequence cs) { + return Objects.equals(values(), cs.values()); + } + return false; + } }