尝试找出字符串数组中重复字符串的数量

时间:2019-03-18 21:36:26

标签: java arrays string return

Here is my code

我研究了如何查找字符串数组中有多少重复的字符串。我认为我已正确完成了此操作,但是我使用的方法要求我返回一个字符串值,但它不会让我返回该值。简而言之,我试图找到大多数患有“食物中毒”的患者最近食用的食物。当重复5次时,“常见食物”必须是数组中的值。有什么建议么?

2 个答案:

答案 0 :(得分:0)

您可以使用strems查找数组中最常见的元素

import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

    public static void main(String[] args) {

        String[] data = {"A", "A", "A", "B", "B", "C"};

        Map.Entry<String, Long> entry = Stream.of(data)
                .collect(Collectors.groupingBy(w -> w, Collectors.counting()))
                .entrySet()
                .stream()
                .max(Comparator.comparing(Map.Entry::getValue))
                .orElse(null);

        if (entry != null) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

答案 1 :(得分:0)

在这种情况下,您可以将地图用于优化和可用性。

下面是您的方法。我没有写所有数据。

我创建了一个foodMap。

static String mostCommonFood() {
    String data[] = {"a","b"};
    Map<String, Integer> foodMap = new HashMap<>();

    for (String val : data) {
        if (foodMap.containsKey(val)) {
            foodMap.put(val, foodMap.get(val)+1);
        } else {
            foodMap.put(val, 1);
        }
    }
    String mostCommonFood = "";
    int mostCommonFoodValue = 0;
    for(Map.Entry<String, Integer> foods : foodMap.entrySet()) {
        if(foods.getValue() > mostCommonFoodValue) {
            mostCommonFoodValue = foods.getValue();
            mostCommonFood = foods.getKey();
        }
    }
    return mostCommonFood;
}