java - 如何获得数组中五个最少重复的元素

标签 java arrays search output

如果我有以下字符串数组。

String inStrings[] = {"A", "B", "C", "D", "E", "F", "G", "H", "A", "B", "C", "D", "E", "A", "B", "C", "D", "A", "B"};

然后这个数组被传递给一个方法,我不确定如何继续。

    static void getColdSearch(String[] inArray){



}

这个方法应该做的是获取数组,获取重复次数最少的字符串,然后在输出中打印出重复次数最少的五个字符串。重复的字符串不必彼此相邻,如果字符串少于五个,那么所有字符串都应该是输出的一部分。例如。如果 arraylist 看起来像上面的例子,输出应该是这样的。

F //(Occurs once)
G //(Occurs once)
H //(Occurs once)
E //(Occurs twice)
D //(if two different elements repeat the same number of times a random one of them should be printed)

我该怎么做?

最佳答案

尝试 java 8 特性

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class GroupingDemo {

    public static void getColdSearch(String[] inArray) {
        Map<String, Long> groupingByLetter = Arrays.stream(inArray)
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        List<String> result = groupingByLetter.entrySet().stream()
            .sorted(Map.Entry.comparingByValue())
            .limit(5)
            .map(Map.Entry::getKey)
            .collect(Collectors.toList());

        System.out.println(result);
    }

    public static void main(String[] args) {
        String inStrings[] = {"A", "B", "C", "D", "E", "F", "G", "H", "A", "B", "C", "D", "E", "A", "B", "C", "D", "A", "B"};
        getColdSearch(inStrings);
    }
}

关于java - 如何获得数组中五个最少重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745419/

相关文章:

java - 我应该如何命名我的 Java 9 模块?

java - 在 Java 中主动抛出 AssertionError 是一种好的做法吗?

数组中值的 C++ 实例? (直方图)

arrays - 数组上的 Bash 子字符串扩展

php - MySQL 统计特定记录

java - 实现 DocumentFilter 时 Enter 键不起作用

java - ActionBar 内的后退按钮如何完成当前 Activity

javascript - 性能: findIndex vs Array.原型(prototype).map

php - parsing_exception:没有为[已过滤]注册任何[查询]

search - Elasticsearch每个groupId的聚合唯一属性