java - 在 Java HashMap 中保留一对原语

标签 java hashmap primitive keyvaluepair

我有一个文件列表。我想扫描并计算相同大小的文件数量。问题在于 filesize 很长,正如我们所知,hashmap 将只接受一个对象而不是一个基元。因此,我使用 new Long(filesize) 将其放入 HashMap 中。我没有得到一对 (filesize, count),而是得到了一个 (filesize, 1) 的列表,因为每个 Long obj 都是唯一的。

我该如何构建这个累加器?

1.4.2 的任何解决方案?

最佳答案

你只需这样做:

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);
  }
}

有一些 auto-boxing并在这里进行拆箱。

关于java - 在 Java HashMap 中保留一对原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/903107/

相关文章:

java - 你能像在 ArrayList 中那样循环遍历 HashMap 吗?

java - 在原始类型和引用类型之间如何使用“==”相等运算符?

java - 使用 'spring boot + mybatis'创建的项目使用 'spring Application'可以启动,如果使用外部tomcat,注入(inject)dao报错

java - 我的 switch 语句没有返回任何内容?

Java IOException : Permission denied on linux while running as owner 错误

Java Swing 组件交互(BoxLayout 和 Label)

java - JMeter - 在变量/属性中存储/更新 HashMap 对象

Java 内部类和 HashMap

java - 拆箱如何在短路 boolean 表达式中工作?

java - Java 线程中的泛型