Попытка выяснить количество повторяющихся строк в массиве строк - PullRequest
0 голосов
/ 19 марта 2019

Вот мой код

Я исследовал, как найти количество дубликатов строк в строковом массиве.Я думаю, что я сделал это правильно, но метод, который я использую, требует, чтобы я возвращал строковое значение, но он не позволит мне вернуть значение.Короче говоря, я пытаюсь найти пищу, которую съели большинство пациентов с «пищевым отравлением» в последнее время.«Обычная еда» должна быть значением в массиве, когда оно повторяется 5 раз.Какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

В этих ситуациях вы можете использовать карты как для оптимизации, так и для удобства использования.

Ниже ваш метод. Я не написал все данные.

Я создал карту питания.

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;
}
0 голосов
/ 19 марта 2019

Вы можете использовать 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());
        }
    }
}
...