Есть ли способ сделать топ-5 в java отображением имен переменных? - PullRequest
0 голосов
/ 31 марта 2020

Я пытался создать и отобразить в JFrame пять лучших из 13 вариантов. Это выглядит примерно так:

У меня есть .txt с кучей слов, скажем, яблоко, банан, апельсин и т. Д. c. И счетчик для каждого слова. Затем я открываю файл и сканирую его сканером и строкой, если он находит слово «яблоко», то добавляет 1 к счетчику яблок. После сканирования всего .txt я помещаю счетчики в массив и сортирую их с помощью Arrays.sort (array);

Моя проблема в том, что массив содержит только значение цифры c для каждого слова, поэтому я попытался сравнить последнюю позицию в массиве (поскольку она является самой высокой) с каждым счетчиком для каждого слова, и если он совпадает с любым счетчиком, который я установил в качестве «Топ-1», затем я делаю то же самое для «Топ-2» и второго-последнего в массиве и т. д.

Но это, очевидно, работает только если нет повторяющихся значений. Если «Apple» и «Orange» оба появятся 3 раза, то оба совпадут, и тогда программа установит первое совпадение в TextField1 и 2.

Есть ли способ go обойти это? Может быть, способ отображения имени переменной в TextField вместо значения? или, может быть, другая структура данных для хранения как имени, так и значения переменной?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 31 марта 2020

или, может быть, другая структура данных для хранения как имени, так и значения переменной?

Ding ding! Вы хотите использовать карту для этого. Карта хранит ключ и значение в виде пары. Чтобы дать вам визуальное представление, карта выглядит следующим образом:

Cats: 5
Dogs: 3
Horses: 2

Используя карту, вы можете получить доступ как к ключу (название слова, которое вы нашли), так и к его парному значению (сколько раз вы его нашли) в вашем файле)

Как пользоваться картами

0 голосов
/ 31 марта 2020

Возможно, вы захотите рассмотреть приоритетную очередь в java. Но сначала вам нужен класс, который имеет 2 атрибута (слово и его количество). Этот класс должен реализовывать Comparable, а метод CompareTo должен быть переопределен. Вот пример: https://howtodoinjava.com/java/collections/java-priorityqueue/

...