Skip to content

Commit ad9c707

Browse files
committed
Use a list instead of a queue
1 parent 7d3c7bb commit ad9c707

File tree

2 files changed

+10
-18
lines changed

2 files changed

+10
-18
lines changed

lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90CompoundFormat.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
package org.apache.lucene.codecs.lucene90;
1818

1919
import java.io.IOException;
20+
import java.util.ArrayList;
21+
import java.util.Comparator;
22+
import java.util.List;
23+
2024
import org.apache.lucene.codecs.CodecUtil;
2125
import org.apache.lucene.codecs.CompoundDirectory;
2226
import org.apache.lucene.codecs.CompoundFormat;
@@ -105,29 +109,18 @@ public void write(Directory dir, SegmentInfo si, IOContext context) throws IOExc
105109

106110
private record SizedFile(String name, long length) {}
107111

108-
private static class SizedFileQueue extends PriorityQueue<SizedFile> {
109-
SizedFileQueue(int maxSize) {
110-
super(maxSize);
111-
}
112-
113-
@Override
114-
protected boolean lessThan(SizedFile sf1, SizedFile sf2) {
115-
return sf1.length < sf2.length;
116-
}
117-
}
118-
119112
private void writeCompoundFile(
120113
IndexOutput entries, IndexOutput data, Directory dir, SegmentInfo si) throws IOException {
121114
// write number of files
122115
int numFiles = si.files().size();
123116
entries.writeVInt(numFiles);
124117
// first put files in ascending size order so small files fit more likely into one page
125-
SizedFileQueue pq = new SizedFileQueue(numFiles);
118+
List<SizedFile> files = new ArrayList<>(numFiles);
126119
for (String filename : si.files()) {
127-
pq.add(new SizedFile(filename, dir.fileLength(filename)));
120+
files.add(new SizedFile(filename, dir.fileLength(filename)));
128121
}
129-
while (pq.size() > 0) {
130-
SizedFile sizedFile = pq.pop();
122+
files.sort(Comparator.comparingLong(SizedFile::length));
123+
for (SizedFile sizedFile : files) {
131124
String file = sizedFile.name;
132125
// align file start offset
133126
long startOffset = data.alignFilePointer(Long.BYTES);

lucene/core/src/java/org/apache/lucene/util/PriorityQueue.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.apache.lucene.util;
1818

19+
import java.util.Arrays;
1920
import java.util.Collection;
2021
import java.util.Iterator;
2122
import java.util.NoSuchElementException;
@@ -242,9 +243,7 @@ public final int size() {
242243

243244
/** Removes all entries from the PriorityQueue. */
244245
public final void clear() {
245-
for (int i = 0; i <= size; i++) {
246-
heap[i] = null;
247-
}
246+
Arrays.fill(heap, 0, size+1, null);
248247
size = 0;
249248
}
250249

0 commit comments

Comments
 (0)