Skip to content

Commit c264375

Browse files
committed
KnnResult is a record
1 parent d59fdac commit c264375

File tree

3 files changed

+20
-55
lines changed

3 files changed

+20
-55
lines changed

algo/src/main/java/org/neo4j/gds/similarity/filteredknn/FilteredKnn.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.neo4j.gds.collections.ha.HugeObjectArray;
2525
import org.neo4j.gds.core.utils.progress.tasks.ProgressTracker;
2626
import org.neo4j.gds.similarity.filtering.NodeFilter;
27-
import org.neo4j.gds.similarity.knn.ImmutableKnnResult;
2827
import org.neo4j.gds.similarity.knn.Knn;
2928
import org.neo4j.gds.similarity.knn.KnnContext;
3029
import org.neo4j.gds.similarity.knn.KnnNeighborFilterFactory;
@@ -141,7 +140,7 @@ private FilteredKnn(
141140
public FilteredKnnResult compute() {
142141
var seedingSummary = targetNodeFiltering.seedingSummary();
143142
KnnResult result = (seedingSummary.seededOptimally()) ?
144-
ImmutableKnnResult.of(
143+
new KnnResult(
145144
HugeObjectArray.newArray(NeighborList.class, 0),
146145
0,
147146
true,

algo/src/main/java/org/neo4j/gds/similarity/knn/Knn.java

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import java.util.Optional;
3535
import java.util.SplittableRandom;
3636
import java.util.concurrent.ExecutorService;
37-
import java.util.stream.LongStream;
3837

3938
public final class Knn extends Algorithm<KnnResult> {
4039

@@ -195,7 +194,7 @@ public ExecutorService executorService() {
195194
@Override
196195
public KnnResult compute() {
197196
if (graph.nodeCount() < 2) {
198-
return new EmptyResult();
197+
return KnnResult.empty();
199198
}
200199
progressTracker.beginSubTask();
201200
progressTracker.beginSubTask();
@@ -234,7 +233,7 @@ public KnnResult compute() {
234233
progressTracker.endSubTask();
235234

236235
progressTracker.endSubTask();
237-
return ImmutableKnnResult.of(
236+
return new KnnResult(
238237
neighbors.data(),
239238
iteration,
240239
didConverge,
@@ -369,41 +368,4 @@ static void reverseNeighbors(
369368
}
370369
}
371370

372-
private static final class EmptyResult extends KnnResult {
373-
374-
@Override
375-
HugeObjectArray<NeighborList> neighborList() {
376-
return HugeObjectArray.of();
377-
}
378-
379-
@Override
380-
public int ranIterations() {
381-
return 0;
382-
}
383-
384-
@Override
385-
public boolean didConverge() {
386-
return false;
387-
}
388-
389-
@Override
390-
public long nodePairsConsidered() {
391-
return 0;
392-
}
393-
394-
@Override
395-
public LongStream neighborsOf(long nodeId) {
396-
return LongStream.empty();
397-
}
398-
399-
@Override
400-
public long size() {
401-
return 0;
402-
}
403-
404-
@Override
405-
public long nodesCompared() {
406-
return 0;
407-
}
408-
}
409371
}

algo/src/main/java/org/neo4j/gds/similarity/knn/KnnResult.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.similarity.knn;
2121

22-
import org.neo4j.gds.annotation.ValueClass;
2322
import org.neo4j.gds.collections.cursor.HugeCursor;
2423
import org.neo4j.gds.collections.ha.HugeObjectArray;
2524
import org.neo4j.gds.similarity.SimilarityResult;
@@ -31,18 +30,13 @@
3130
import java.util.stream.LongStream;
3231
import java.util.stream.Stream;
3332

34-
@ValueClass
35-
public abstract class KnnResult {
36-
abstract HugeObjectArray<NeighborList> neighborList();
37-
38-
public abstract int ranIterations();
39-
40-
public abstract boolean didConverge();
41-
42-
public abstract long nodePairsConsidered();
43-
44-
public abstract long nodesCompared();
45-
33+
public record KnnResult(
34+
HugeObjectArray<NeighborList> neighborList,
35+
int ranIterations,
36+
boolean didConverge,
37+
long nodePairsConsidered,
38+
long nodesCompared
39+
) {
4640

4741
public LongStream neighborsOf(long nodeId) {
4842
return neighborList().get(nodeId).elements().map(NeighborList::clearCheckedFlag);
@@ -104,4 +98,14 @@ public long totalSimilarityPairs() {
10498
public long size() {
10599
return neighborList().size();
106100
}
101+
102+
static KnnResult empty() {
103+
return new KnnResult(
104+
HugeObjectArray.of(),
105+
0,
106+
false,
107+
0L,
108+
0L
109+
);
110+
}
107111
}

0 commit comments

Comments
 (0)