gpt4 book ai didi

java - 如果值重复, HashMap 会优化内存吗?

转载 作者:行者123 更新时间:2023-12-01 07:40:36 25 4
gpt4 key购买 nike

示例:

假设我想创建一个包含 26 个键的 Hashmap,在本例中为 'A''Z'。现在假设我希望键 'A''M''Z' 返回与 相同的整数值123..创建此映射时,映射是否会进行优化,以便内存中仅存储一个值?或者它仍然将其视为具有 3 个不同值的 3 个不同键,即使 3 个值相同。

我希望这个问题有意义。

谢谢

最佳答案

简而言之,不。

某些类在某些情况下可能会缓存类似的变量,但 HashMap 本身不会。

现在,对于整数,如果您使用 Integer myInt = Integer.valueOf(123) 获取整数,那么它将始终返回相同的 Integer 引用,但这只是因为 Integer.valueOf() 的机制具有最接近 0 的 256 个 Integers 的缓存。您不能也不应该依赖此机制来提高内存效率。

如果您有以下情况,您可以做出一些假设:

Map<String,Integer> map = new HashMap<String,Integer>();

Integer myInt = new Integer(123); // one Integer object

// add it 3 times
map.put("A",myInt);
map.put("M",myInt);
map.put("Z",myInt);

您可以假设:

Map中有3个对Integers的引用(如指针),它们占用了一些内存。有 1 个 Integer 对象也占用内存。

关于java - 如果值重复, HashMap 会优化内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438908/

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