使用Java实现算法计算每个字符串在字符串数组中出现的次数的最快方法

使用Java实现算法计算每个字符串在字符串数组中出现的次数的最快方法,java,arrays,algorithm,Java,Arrays,Algorithm,想知道使用Java实现一个算法来计算每个字符串在字符串数组中出现的次数的最快方法是什么 这就是我尝试过的方法,它是有效的,但我担心它可能会作弊,因为它有点偏离了问题: { String[] stringArray = {"Random", "Words", "Here","Random", "Words", "Here","Random", "Words", "Here","Random", "Words", "Here"}; List asList = Arrays.asLi

想知道使用Java实现一个算法来计算每个字符串在字符串数组中出现的次数的最快方法是什么

这就是我尝试过的方法,它是有效的,但我担心它可能会作弊,因为它有点偏离了问题:

{
    String[] stringArray = {"Random", "Words", "Here","Random", "Words", "Here","Random", "Words", "Here","Random", "Words", "Here"};

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

    mySet.stream().forEach((s) -> {
        System.out.println(s + " " +Collections.frequency(asList,s));
    });
}
最简单的方法是使用:


通过在流中使用收集器:

Arrays.stream(list).collect(Collectors.groupingBy(e -> e, Collectors.counting()))
所以,如果你有这样的东西:

        String[] list = new String[4];
        list[0] = "something";
        list[1] = "gfddfgdfg";
        list[2] = "something";
        list[3] = "somet444hing";
        System.out.println(Arrays.stream(list).collect(Collectors.groupingBy(e -> e, Collectors.counting())));
输出将是:

{gfddfgdfg=1, something=2, somet444hing=1}

我将使用groupingBy返回计数图

Map<String, Long> counts = Stream.of(array)
                           .collect(Collectors.groupingBy(w -> w, Collectors.counting()));

你用Map.Merge做了哪些尝试?另一个家庭作业问题,现在才70年9月8日。对不起,忘了添加我已经用过的代码,我不喜欢使用集合的想法,我觉得这个解决方案太偏离了这个问题。
{gfddfgdfg=1, something=2, somet444hing=1}
Map<String, Long> counts = Stream.of(array)
                           .collect(Collectors.groupingBy(w -> w, Collectors.counting()));
Stream.of(array)
      .collect(Collectors.groupingBy(w -> w, Collectors.counting()))
      .forEach((k, v) -> System.out.println(k + " occurred " + v " times));