gpt4 book ai didi

java - 实例化 Map 时使用 Wrapper 类作为键和值

转载 作者:行者123 更新时间:2023-11-30 06:05:20 25 4
gpt4 key购买 nike

我有一个关于实例化 Map 时的一些语义的问题。具体来说,在分配键和值类型时我应该使用Wrapper类,还是可以使用原始类型?

示例:

Map<int, String> map = new TreeMap<int, String>();

或者

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

示例:

Map<int[], String> map = new TreeMap<int[], String>();

或者

Map<Integer[], String> map = new TreeMap<Integer[], String>();

这两个实例在约定和含义方面有什么区别吗?我知道使用原始类型会在读取或写入对象时调用自动装箱。

最佳答案

您不能在泛型类型规范中使用原始类型(例如上面建议的 Map<int, String> ),因此您必须使用包装类(即此用例的 Map<Integer, String> )。当然,您仍然可以在调用这样的类的方法时使用基元,因为基元将被自动装箱(例如 myMap.put(7, 'Some String')

数组是一个不同的问题。原始数组实际上是对象,因此您可以在通用规范中使用它们。但是,数组不会覆盖 equals(Object)hashCode()方法(无论它们是基元数组还是对象数组),这使得它们成为映射键的非常糟糕的选择。

关于java - 实例化 Map 时使用 Wrapper 类作为键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948283/

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