Как определить, каких символов в ArrayList больше всего?

Пользователь

от craig.emmerich , в категории: Другие , 6 месяцев назад

Как определить, каких символов в ArrayList больше всего?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от edyth , 6 месяцев назад

@craig.emmerich 

Для определения, каких символов в ArrayList больше всего, можно использовать следующий алгоритм:

  1. Создайте HashMap, где ключом будет символ, а значением - количество его вхождений в ArrayList.
  2. Пройдитесь по всем элементам ArrayList с помощью цикла.
  3. Для каждого элемента получите его символ с помощью метода charAt() и добавьте его в HashMap. Если ключ уже существует в HashMap, увеличьте значение для этого ключа на 1. Если ключа еще нет в HashMap, добавьте его с начальным значением 1.
  4. Найдите символ с максимальным значением в HashMap. Пройдитесь по всем парам ключ-значение в HashMap с помощью цикла и запомните символ с максимальным значением.
  5. Выведите символ, количество его вхождений и можете использовать дополнительно коллекцию (если это требуется).


Пример кода на Java:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Character> list = new ArrayList<>();
        // Добавление элементов в ArrayList
        list.add('a');
        list.add('b');
        list.add('c');
        list.add('a');
        list.add('a');
        list.add('b');

        // Создание HashMap для подсчета символов
        HashMap<Character, Integer> charCountMap = new HashMap<>();

        // Подсчет символов
        for (char c : list) {
            if (charCountMap.containsKey(c)) {
                charCountMap.put(c, charCountMap.get(c) + 1);
            } else {
                charCountMap.put(c, 1);
            }
        }

        // Поиск символа с максимальным значением
        char maxChar = ' ';
        int maxCount = 0;
        for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
            if (entry.getValue() > maxCount) {
                maxChar = entry.getKey();
                maxCount = entry.getValue();
            }
        }

        // Вывод символа и его количество вхождений
        System.out.println("Символ с максимальным количеством вхождений: " + maxChar);
        System.out.println("Количество вхождений: " + maxCount);
        
        // Вывод коллекции символов и их количества вхождений
        for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
            System.out.println("Символ: " + entry.getKey() + ", Количество вхождений: " + entry.getValue());
        }
    }
}


Результат выполнения программы:

1
2
3
4
5
Символ с максимальным количеством вхождений: a
Количество вхождений: 3
Символ: a, Количество вхождений: 3
Символ: b, Количество вхождений: 2
Символ: c, Количество вхождений: 1