diff --git a/jvector-base/src/main/java/io/github/jbellis/jvector/vector/ArrayVectorFloat.java b/jvector-base/src/main/java/io/github/jbellis/jvector/vector/ArrayVectorFloat.java index 32dce1f35..0906fd736 100644 --- a/jvector-base/src/main/java/io/github/jbellis/jvector/vector/ArrayVectorFloat.java +++ b/jvector-base/src/main/java/io/github/jbellis/jvector/vector/ArrayVectorFloat.java @@ -123,5 +123,10 @@ public int hashCode() { return this.getHashCode(); } + + @Override + public float[] toArray() { + return get(); + } } diff --git a/jvector-base/src/main/java/io/github/jbellis/jvector/vector/types/VectorFloat.java b/jvector-base/src/main/java/io/github/jbellis/jvector/vector/types/VectorFloat.java index e749ccdc5..2ea8cda6b 100644 --- a/jvector-base/src/main/java/io/github/jbellis/jvector/vector/types/VectorFloat.java +++ b/jvector-base/src/main/java/io/github/jbellis/jvector/vector/types/VectorFloat.java @@ -55,4 +55,12 @@ default int getHashCode() { } return result; } + + default float[] toArray() { + final float[] arr = new float[length()]; + for (int i = 0; i < length(); ++i) { + arr[i] = get(i); + } + return arr; + } } diff --git a/jvector-native/src/main/java/io/github/jbellis/jvector/vector/MemorySegmentVectorFloat.java b/jvector-native/src/main/java/io/github/jbellis/jvector/vector/MemorySegmentVectorFloat.java index 3e3f67e1f..833d7ebf5 100644 --- a/jvector-native/src/main/java/io/github/jbellis/jvector/vector/MemorySegmentVectorFloat.java +++ b/jvector-native/src/main/java/io/github/jbellis/jvector/vector/MemorySegmentVectorFloat.java @@ -141,4 +141,9 @@ public boolean equals(Object o) public int hashCode() { return this.getHashCode(); } + + @Override + public float[] toArray() { + return (float[])segment.heapBase().get(); + } }