[英]Time Complexity of .add() in HashSet of Vectors in Java
我有兩個 java HashSet,如下所示:
HashSet<Integer> H1 = new HashSet<>();
HashSet<Vector> H2 = new HashSet<>();
隨着每個 HashSet 中元素數量的增加(假設一些元素是唯一的,有些不是),為第二個 HashSet(*of vectors) 添加元素的時間復雜度是否發生變化(相對於第二個 HashSet( *整數))? 還是 HashSet 包含 Vectors 的事實不會影響時間復雜度?
我了解.add()
的時間復雜度,第一個 HashSet 是(通常)O(1),但有人可以澄清H2
嗎?
另外,如果它是 Vectors 的 TreeSet,那么在這種情況下.add()
的時間復雜度將如何從 int 的 TreeSet 改變?
你的問題做出了一些錯誤的假設
HashSet<Integer> H1 = new HashSet<>();
HashSet<Vector> H2 = new HashSet<>();
Vector 是 Java 1.0 中遺留的同步類。 您可能最好使用 ArrayList。 Vector 也是一個可變類,這意味着如果它所包含的對象發生變化,它可能無法在 HashSet 中正常工作
隨着每個 HashSet 中元素數量的增加(假設一些元素是唯一的,有些則不是)
Set 中不能有非唯一元素
隨着每個 HashSet 中元素數量的增加(假設一些元素是唯一的,有些不是),為第二個 HashSet(*of vectors) 添加元素的時間復雜度是否發生變化(相對於第二個 HashSet( *整數))? 還是 HashSet 包含 Vectors 的事實不會影響時間復雜度?
我了解 .add() 的時間復雜度,第一個 HashSet 是(通常)O(1),但有人可以澄清 H2 嗎?
基本上,更大的列表會改變時間復雜度——不是 HashSet,而是 hashcode() 和 equals。 另請注意,在將列表添加為哈希映射/哈希集中的鍵后,從列表中添加或刪除元素通常會破壞映射。
另外,如果它是 Vectors 的 TreeSet,那么在這種情況下 .add() 的時間復雜度將如何從 int 的 TreeSet 改變?
你不能這樣做,因為 Vector 沒有實現Comparable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.