zer*_*n23 6 java primitive hashmap keyvaluepair
我有一个文件列表.我想扫描并保持相同大小的文件数量.问题是文件大小很长,正如我们所知,hashmap只接受一个对象而不是一个基元.所以使用new Long(filesize),我把它放入hashmap.由于每个Long obj都是唯一的,因此我获得了一个(filesize,1)列表,而不是获得一对(filesize,count).
我该如何构建这个累加器?
1.4.2的任何解决方案?
cle*_*tus 15
你只需这样做:
Map<Long, Integer> count = new HashMap<Long, Integer>();
for (File file : files) {
long size = file.getTotalSpace();
Integer n = count.get(size);
if (n == null) {
count.put(size, 1);
} else {
count.put(size, n + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一些自动装箱和拆箱.
而不是使用new Long(size),你应该使用Long.valueOf(size).这将返回相同的长引用,内部缓存,并且还应该提升性能(不,除非你做这些数以百万计的将是可见的new Long()操作).
PS.仅适用于java 1.5或更高版本
| 归档时间: |
|
| 查看次数: |
22098 次 |
| 最近记录: |