aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/result
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-09-09 15:38:24 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-09-09 15:38:24 +0200
commit5381ce1b3f336a09ecf8fe6e991d1fa2b12282d6 (patch)
treea42339317e7f11ae54523d140ec320987ace14db /container-search/src/main/java/com/yahoo/search/result
parentdd25c2a3c4c16ba96eda61e996f5347f1f8eaa9c (diff)
Removing elements from an array is very costly.
Make a new one and copy the ones to keep instead.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/result')
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Hit.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroup.java9
2 files changed, 8 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/result/Hit.java b/container-search/src/main/java/com/yahoo/search/result/Hit.java
index 10fa7d24d1a..13f0dc1c007 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Hit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Hit.java
@@ -625,7 +625,6 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi
}
/** Compares this hit to another hit */
- @SuppressWarnings("deprecation")
@Override
public int compareTo(Hit other) {
// higher relevance is before
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
index 9ecd6513a94..a12a2566f68 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
@@ -501,10 +501,17 @@ public class HitGroup extends Hit implements DataList<Hit>, Cloneable, Iterable<
currentIndex++;
if (currentIndex < offset || currentIndex >= highBound) {
- i.remove();
handleRemovedHit(hit);
}
}
+ if ((offset > 0) || (hits.size() > highBound)) {
+ ListenableArrayList<Hit> newHits = new ListenableArrayList<>(numHits);
+ for (int index = offset; index < Math.min(highBound, hits.size()); index++) {
+ newHits.add(hits.get(index));
+ }
+ hits = newHits;
+ unmodifiableHits = Collections.unmodifiableList(hits);
+ }
}
/**