From e6e6e851971fa21a48497db99cdbce781082f70e Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Fri, 10 Jul 2026 09:39:43 -0400 Subject: [PATCH] Add toArray method to existing VectorFloat to access underlying float[] vectors representation Signed-off-by: Andriy Redko --- .../github/jbellis/jvector/vector/ArrayVectorFloat.java | 5 +++++ .../github/jbellis/jvector/vector/types/VectorFloat.java | 8 ++++++++ .../jbellis/jvector/vector/MemorySegmentVectorFloat.java | 5 +++++ 3 files changed, 18 insertions(+) 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(); + } }