gpt4 book ai didi

java - HashMap 的 keySet() 返回的 Set 的子类型是什么?

转载 作者:行者123 更新时间:2023-12-01 18:45:23 25 4
gpt4 key购买 nike

我试图检查HashMap的keySet()方法返回的Set的子类型,并检查它是否是HashSet的实例,但不是。

由于我有大量的键并且大量使用keys.contains(),所以如果它不是HashSet类型,该方法的使用成本可能会很高,而且它确实会降低我的程序的速度。

那么你知道 keySet() 方法返回什么子类型吗?有什么编程方法可以检查“Set set”实例的特定类型吗?我想我可能只是将它单独变成一个 HashSet,但这会占用更多内存。

编辑:所以我检查了。就是AbstractSet,那么AbstractSet在containsKey()中使用了什么样的机制呢?如果它迭代所有元素并找到 key ,则成本非常高。您认为为它们的键创建一个单独的 HashSet 是一个好主意吗?

最终编辑:好的,彻底检查了源代码。它确实使用哈希机制来检查 key 是否存在。对于那些想知道我为什么问的人:我的程序需要永远运行:(。现在尝试调整它。

最佳答案

这是一个在 HashMap 中定义的私有(private)内部类,名为 KeySet,如果您 take a look 就可以看到它。 。

KeySetcontains 方法只是调用 map 的 containsKey (这是 O(1) 而不是一点也不贵):

896    public boolean contains(Object o) {
897 return containsKey(o);
898 }

关于java - HashMap 的 keySet() 返回的 Set 的子类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com