URI Builder performance optimization (#355)
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/net/URIBuilder.java b/httpcore5/src/main/java/org/apache/hc/core5/net/URIBuilder.java
index 2ea23e7..8212db6 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/net/URIBuilder.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/net/URIBuilder.java
@@ -36,8 +36,8 @@
import java.util.Arrays;
import java.util.BitSet;
import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
-import java.util.Stack;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.NameValuePair;
@@ -1033,22 +1033,22 @@
if (this.pathSegments != null) {
final List<String> inputSegments = this.pathSegments;
if (!inputSegments.isEmpty()) {
- final Stack<String> outputSegments = new Stack<>();
+ final LinkedList<String> outputSegments = new LinkedList<>();
for (final String inputSegment : inputSegments) {
if (!inputSegment.isEmpty() && !".".equals(inputSegment)) {
if ("..".equals(inputSegment)) {
if (!outputSegments.isEmpty()) {
- outputSegments.pop();
+ outputSegments.removeLast();
}
} else {
- outputSegments.push(inputSegment);
+ outputSegments.addLast(inputSegment);
}
}
}
if (!inputSegments.isEmpty()) {
final String lastSegment = inputSegments.get(inputSegments.size() - 1);
if (lastSegment.isEmpty()) {
- outputSegments.push("");
+ outputSegments.addLast("");
}
}
this.pathSegments = outputSegments;