diff --git a/quic/core/crypto/transport_parameters.h b/quic/core/crypto/transport_parameters.h
index 630f7bb..1d91db3 100644
--- a/quic/core/crypto/transport_parameters.h
+++ b/quic/core/crypto/transport_parameters.h
@@ -28,7 +28,7 @@
   // The identifier used to differentiate transport parameters.
   enum TransportParameterId : uint64_t;
   // A map used to specify custom parameters.
-  using ParameterMap = QuicUnorderedMap<TransportParameterId, std::string>;
+  using ParameterMap = QuicHashMap<TransportParameterId, std::string>;
   // Represents an individual QUIC transport parameter that only encodes a
   // variable length integer. Can only be created inside the constructor for
   // TransportParameters.
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h
index 703dffa..1232367 100644
--- a/quic/core/http/quic_spdy_session.h
+++ b/quic/core/http/quic_spdy_session.h
@@ -561,7 +561,7 @@
 
   // Priority values received in PRIORITY_UPDATE frames for streams that are not
   // open yet.
-  QuicUnorderedMap<QuicStreamId, int> buffered_stream_priorities_;
+  QuicHashMap<QuicStreamId, int> buffered_stream_priorities_;
 };
 
 }  // namespace quic
diff --git a/quic/core/qpack/qpack_blocking_manager.h b/quic/core/qpack/qpack_blocking_manager.h
index f1659a6..ecb5699 100644
--- a/quic/core/qpack/qpack_blocking_manager.h
+++ b/quic/core/qpack/qpack_blocking_manager.h
@@ -77,7 +77,7 @@
   // same time.  Use std::list instead of QuicCircularDeque because it has lower
   // memory footprint when holding few elements.
   using HeaderBlocksForStream = std::list<IndexSet>;
-  using HeaderBlocks = QuicUnorderedMap<QuicStreamId, HeaderBlocksForStream>;
+  using HeaderBlocks = QuicHashMap<QuicStreamId, HeaderBlocksForStream>;
 
   // Increase or decrease the reference count for each index in |indices|.
   void IncreaseReferenceCounts(const IndexSet& indices);
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h
index 04c1698..f0c35ea 100644
--- a/quic/core/quic_dispatcher.h
+++ b/quic/core/quic_dispatcher.h
@@ -103,18 +103,17 @@
   void OnConnectionAddedToTimeWaitList(
       QuicConnectionId server_connection_id) override;
 
-  using SessionMap = QuicUnorderedMap<QuicConnectionId,
-                                      std::unique_ptr<QuicSession>,
-                                      QuicConnectionIdHash>;
+  using SessionMap = QuicHashMap<QuicConnectionId,
+                                 std::unique_ptr<QuicSession>,
+                                 QuicConnectionIdHash>;
 
   const SessionMap& session_map() const { return session_map_; }
 
   // Deletes all sessions on the closed session list and clears the list.
   virtual void DeleteSessions();
 
-  using ConnectionIdMap = QuicUnorderedMap<QuicConnectionId,
-                                           QuicConnectionId,
-                                           QuicConnectionIdHash>;
+  using ConnectionIdMap =
+      QuicHashMap<QuicConnectionId, QuicConnectionId, QuicConnectionIdHash>;
 
   // QuicBufferedPacketStore::VisitorInterface implementation.
   void OnExpiredPackets(QuicConnectionId server_connection_id,
