| diff --git a/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsReader.java |
| index 0ef21292c0..742accece4 100644 |
| --- a/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsReader.java |
| +++ b/lucene/core/src/java/org/apache/lucene/codecs/blocktree/BlockTreeTermsReader.java |
| @@ -21,9 +21,10 @@ import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Collections; |
| +import java.util.HashMap; |
| import java.util.Iterator; |
| import java.util.List; |
| -import java.util.TreeMap; |
| +import java.util.Map; |
| |
| import org.apache.lucene.codecs.CodecUtil; |
| import org.apache.lucene.codecs.FieldsProducer; |
| @@ -119,7 +120,7 @@ public final class BlockTreeTermsReader extends FieldsProducer { |
| // produce DocsEnum on demand |
| final PostingsReaderBase postingsReader; |
| |
| - private final TreeMap<String,FieldReader> fields = new TreeMap<>(); |
| + private final Map<String,FieldReader> fields = new HashMap<>(); |
| |
| final String segment; |
| |
| @@ -257,7 +258,9 @@ public final class BlockTreeTermsReader extends FieldsProducer { |
| |
| @Override |
| public Iterator<String> iterator() { |
| - return Collections.unmodifiableSet(fields.keySet()).iterator(); |
| + List<String> fieldNames = new ArrayList<>(fields.keySet()); |
| + Collections.sort(fieldNames); |
| + return Collections.unmodifiableList(fieldNames).iterator(); |
| } |
| |
| @Override |
| diff --git a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java |
| index 36f035854d..429ab6599d 100644 |
| --- a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java |
| +++ b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java |
| @@ -29,7 +29,6 @@ import java.util.List; |
| import java.util.Map; |
| import java.util.ServiceLoader; // javadocs |
| import java.util.Set; |
| -import java.util.TreeMap; |
| import java.util.TreeSet; |
| |
| import org.apache.lucene.codecs.FieldsConsumer; |
| @@ -247,7 +246,7 @@ public abstract class PerFieldPostingsFormat extends PostingsFormat { |
| |
| private static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(FieldsReader.class); |
| |
| - private final Map<String,FieldsProducer> fields = new TreeMap<>(); |
| + private final Map<String,FieldsProducer> fields = new HashMap<>(); |
| private final Map<String,FieldsProducer> formats = new HashMap<>(); |
| private final String segment; |
| |
| @@ -308,7 +307,9 @@ public abstract class PerFieldPostingsFormat extends PostingsFormat { |
| |
| @Override |
| public Iterator<String> iterator() { |
| - return Collections.unmodifiableSet(fields.keySet()).iterator(); |
| + List<String> fieldNames = new ArrayList<>(fields.keySet()); |
| + Collections.sort(fieldNames); |
| + return Collections.unmodifiableList(fieldNames).iterator(); |
| } |
| |
| @Override |