gpt4 book ai didi

java - 如何将原始类型存储在 Hashmap 中或作为值而不是包装类对象列出

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:27 24 4
gpt4 key购买 nike

这个问题是在面试中被问到的。

我知道原始类型将被转换为包装类对象以存储在任何数据结构中。

但是面试官问我不希望它是一个包装类对象,它应该存储为原始类型。

我们怎样才能做到这一点?

最佳答案

使用 Java 的 Collection API,您无法以明智的方式进行操作。当然你可以实现 ListMap自己连接并决定存储基元而不是对象,但这无论如何都会让你头疼。 Java 的集合接口(interface)都是基于对象的(泛型甚至没有发挥作用),所以你不能有一个 addremove以 int 作为参数的方法。

假设您有自己的 List<Integer> 实现存储 int而不是 Integer由接口(interface)定义,你可以这样写:

List<Integer> intList = new MyPrimitiveImplementation<>();
intList.add(42);

现在发生的是原始 int 42 被自动装箱为 Integer对象因为 Collection接口(interface)将添加方法定义为add(Integer e) .然后你的实现可以做的是拆箱 Integer再次对象只是为了取回原语。

所以,真的没有意义。你要么遇到严重的性能问题(想象一下上面的自动装箱发生了几百万次),要么你失去了与 Collections API 的兼容性。两者都是不可取的。

关于java - 如何将原始类型存储在 Hashmap 中或作为值而不是包装类对象列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501448/

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