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;
