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

2022-09-01 07:05:59

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

假设我有:

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

此处的输出仅用于演示预期结果。


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

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

答案 2

使用,你可以像这样做:

String[] array = {"name1","name2","name3","name4", "name5", "name2"};
Arrays.stream(array)
      .collect(Collectors.groupingBy(s -> s))
      .forEach((k, v) -> System.out.println(k+" "+v.size()));

输出:

name5 1
name4 1
name3 1
name2 2
name1 1

它的作用是:

  • 从原始数组创建Stream<String>
  • 按标识对每个元素进行分组,从而得到Map<String, List<String>>
  • 对于每个键值对,打印键和列表的大小

如果要获取包含每个单词的出现次数的 a,可以执行以下操作:Map

Map<String, Long> map = Arrays.stream(array)
    .collect(Collectors.groupingBy(s -> s, Collectors.counting()));

欲了解更多信息:

希望它有帮助!:)