(coded-sequence) Add equals and hashCode to VCS

This commit is contained in:
Viktor Lofgren 2024-09-10 10:33:56 +02:00
parent 50ec922c2b
commit 35f49bbb60
3 changed files with 22 additions and 4 deletions

View File

@ -19,4 +19,5 @@ public interface CodedSequence {
int bufferSize();
int valueCount();
}

View File

@ -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<Integer>, 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<Integer>, CodedSequence {
}
}

View File

@ -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;
}
}