我试图检查 HashMap 的 keySet() 方法返回的 Set 的子类型,并检查它是否是 HashSet 的实例,但不是。
由于我有大量的键并且大量使用 keys.contains(),所以如果它不是 HashSet 的类型,那么使用该方法可能会很昂贵,并且它确实使我的程序变慢了很多。
那么你知道 keySet() 方法返回什么子类型吗?有任何编程方式来检查“Set set”实例的特定类型吗?我在想我可能只是将它单独变成一个 HashSet ,但这会使用更多的内存。
编辑:所以我检查了。是AbstractSet,那么AbstractSet在containsKey()中使用了什么样的机制呢?如果它遍历所有元素并找到关键,它会非常昂贵。你认为为它们的键创建一个单独的 HashSet 是个好主意吗?
最终编辑:好的,彻底检查了源代码。它确实使用哈希机制来检查密钥的存在。对于那些想知道我为什么问的人:我的程序需要永远运行:(。现在正在尝试调整它。