簡體   English   中英

Java 向量 HashSet 中 .add() 的時間復雜度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM