You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2020/01/08 08:35:14 UTC

[lucenenet] 05/06: Lucene.Net.Index.BaseCompositeReader: Eliminated unnecessary O(n + n) operation and cast

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 6a7b255eb8f81c771bd7885bcf041f3c76b82b5c
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Tue Jan 7 21:49:21 2020 +0700

    Lucene.Net.Index.BaseCompositeReader: Eliminated unnecessary O(n + n) operation and cast
---
 src/Lucene.Net/Index/BaseCompositeReader.cs | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/Lucene.Net/Index/BaseCompositeReader.cs b/src/Lucene.Net/Index/BaseCompositeReader.cs
index 90da6c8..ff6ef78 100644
--- a/src/Lucene.Net/Index/BaseCompositeReader.cs
+++ b/src/Lucene.Net/Index/BaseCompositeReader.cs
@@ -1,6 +1,6 @@
+using J2N.Collections;
 using System;
 using System.Collections.Generic;
-using System.Linq;
 
 namespace Lucene.Net.Index
 {
@@ -59,7 +59,7 @@ namespace Lucene.Net.Index
         /// List view solely for <see cref="GetSequentialSubReaders()"/>,
         /// for effectiveness the array is used internally.
         /// </summary>
-        private readonly IList<R> subReadersList;
+        private readonly IList<IndexReader> subReadersList; // LUCENENET: Changed from IList<R> to IList<IndexReader> to eliminate casting
 
         /// <summary>
         /// Constructs a <see cref="BaseCompositeReader{R}"/> on the given <paramref name="subReaders"/>. </summary>
@@ -71,7 +71,13 @@ namespace Lucene.Net.Index
         protected BaseCompositeReader(R[] subReaders)
         {
             this.subReaders = subReaders;
-            this.subReadersList = subReaders.ToList();// Collections.unmodifiableList(Arrays.asList(subReaders));
+
+            // LUCENENET: To eliminate casting, we create the list explicitly
+            var subReadersList = new List<IndexReader>(subReaders.Length);
+            for (int i = 0; i < subReaders.Length; i++)
+                subReadersList.Add(subReaders[i]);
+            this.subReadersList = subReadersList.ToUnmodifiableList();
+
             starts = new int[subReaders.Length + 1]; // build starts array
             int maxDoc = 0, numDocs = 0;
             for (int i = 0; i < subReaders.Length; i++)
@@ -222,7 +228,7 @@ namespace Lucene.Net.Index
 
         protected internal override sealed IList<IndexReader> GetSequentialSubReaders()
         {
-            return subReadersList.Cast<IndexReader>().ToList();
+            return subReadersList;
         }
     }
 }
\ No newline at end of file