You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by wo...@apache.org on 2018/01/06 04:19:57 UTC
incubator-freemarker git commit: FREEMARKER-55: no list needed;
use array simply in new #of()
Repository: incubator-freemarker
Updated Branches:
refs/heads/3 def59eb43 -> 7887a9208
FREEMARKER-55: no list needed; use array simply in new #of()
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/7887a920
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/7887a920
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/7887a920
Branch: refs/heads/3
Commit: 7887a9208f9361b8512fb00fbc7d56841d3e6050
Parents: def59eb
Author: Woonsan Ko <wo...@apache.org>
Authored: Fri Jan 5 23:18:44 2018 -0500
Committer: Woonsan Ko <wo...@apache.org>
Committed: Fri Jan 5 23:18:44 2018 -0500
----------------------------------------------------------------------
.../freemarker/core/util/StringToIndexMap.java | 35 ++++++++------------
1 file changed, 13 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7887a920/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java
index a2248b1..4d9a150 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java
@@ -19,8 +19,6 @@
package org.apache.freemarker.core.util;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -141,12 +139,20 @@ public final class StringToIndexMap {
*/
public static StringToIndexMap of(StringToIndexMap baseMap, Entry... additionalEntries) {
final int additionalEntriesLength = (additionalEntries != null) ? additionalEntries.length : 0;
- List<Entry> newEntries = new ArrayList<>(baseMap.size() + additionalEntriesLength);
- baseMap.collectAllEntriesInto(newEntries);
- for (int i = 0; i < additionalEntriesLength; i++) {
- newEntries.add(additionalEntries[i]);
+ Entry[] newEntries = new Entry[baseMap.size() + additionalEntriesLength];
+ int index = 0;
+ if (baseMap.buckets != null) {
+ for (Entry entry : baseMap.buckets) {
+ while (entry != null) {
+ newEntries[index++] = entry;
+ entry = entry.nextInSameBucket;
+ }
+ }
}
- return of(newEntries.toArray(new Entry[newEntries.size()]));
+ if (additionalEntriesLength > 0) {
+ System.arraycopy(additionalEntries, 0, newEntries, index, additionalEntriesLength);
+ }
+ return of(newEntries);
}
// This is a very frequent case, so we optimize for it a bit.
@@ -354,21 +360,6 @@ public final class StringToIndexMap {
return null;
}
- /**
- * Traverse all the entries and collect all into the given {@code targetEntryCollection}.
- */
- private void collectAllEntriesInto(Collection<Entry> targetEntryCollection) {
- if (buckets == null) {
- return;
- }
- for (Entry entry : buckets) {
- while (entry != null) {
- targetEntryCollection.add(entry);
- entry = entry.nextInSameBucket;
- }
- }
- }
-
/*
// Code used to see how well the elements are spread among the buckets: