我試着檢查Set的keySet()方法的子類型是否返回,並檢查它是否是HashSet的實例,但它不是。HashMap的keySet()返回Set的子類型是什麼?
由於我有一大組密鑰並大量使用keys.contains(),所以如果它不是HashSet類型,則該方法使用起來可能很昂貴,並且它確實減慢了我的程序。
那麼你知道keySet()方法返回的子類型是什麼嗎?任何編程方式來檢查「Set set」實例的具體類型?我想我可能會單獨將它變成一個HashSet,但會使用更多的內存。
編輯:所以我查了一下。它是AbstractSet,那麼AbstractSet在containsKey()中使用什麼樣的機制?如果它遍歷所有元素並找到密鑰,則它非常昂貴。你認爲爲他們的密鑰創建一個單獨的HashSet是個好主意嗎?
最終編輯:好的,徹底檢查源代碼。它確實使用散列機制來檢查密鑰的存在。對於那些誰不知道爲什麼我問:。
您是否檢查過'keySet'的源代碼? –
或者只是調用'.getClass()'並打印出來? –
或者在IDE調試器中檢查它 –