Java 计算数组中每个项目的出现次数

新手上路,请多包涵

有什么方法可以计算数组中每个项目的出现次数吗?

可以说我有:

 String[] array = {"name1","name2","name3","name4", "name5"};

这里的输出将是:

 name1 1
name2 1
name3 1
name4 1
name5 1

如果我有:

 String[] array = {"name1","name1","name2","name2", "name2"};

输出将是:

 name1 2
name2 3

这里的输出只是为了演示预期的结果。

原文由 Favolas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 627
2 个回答

您可以使用来自 Google Collections/Guava 的 MultiSet Bag 或来自 Apache Commons 的 —。

如果你有一个集合而不是一个数组,你可以使用 addAll() 将全部内容添加到上述数据结构中,然后对每个值应用 count() 方法。 SortedMultiSetSortedBag 会按照定义的顺序为您提供项目。

Google Collections 实际上有从数组到 SortedMultiset 的非常方便的方法。

原文由 Uri 发布,翻译遵循 CC BY-SA 4.0 许可协议

List asList = Arrays.asList(array);
Set<String> mySet = new HashSet<String>(asList);

for(String s: mySet){
 System.out.println(s + " " + Collections.frequency(asList,s));
}

原文由 Damian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题