我有一个程序,需要存储一些简单的int值,并将每个值与一个字符串键相关联。目前,我是这样初始化这个成员的:
private Map<String, int[]> imageSizes = new HashMap<String, int[]>();
然后可以通过类似 imageSizes.put("some key", new int[]{100, 200});
的方式将其附加到其中。
我的问题是 - 是否有一种方法可以给这些值一个固定的长度?每个数组中我只需要2个元素。如果我尝试在成员定义中为数组指定长度,Java会报错。
此外,在这种情况下限制数组长度是否有益处,还是我在优化方面过于热衷了?
new int[100]
会为100个值分配内存,而new int[]
则会分配由编译器声明为“足够”的某些数量,并在用完时调整大小。但在Java中不是这样吗?当然,所有这些只适用于原始类型... - pospinew int[]
仅在构造中,数组元素跟随在大括号中且编译器可以计数时才合法。我的观点是,在 Map 中,用于值的内存量只是引用大小,无论数组本身有多大。因此,调整数组大小不会改变映射使用的内存量。在 C 中,您可以声明一个指针,然后为其分配更多或更少的内存(或忘记分配任何内存并崩溃);Java 不是这样工作的。 - Andrew Lazarus