Содержание
В этом уроке по Java вы узнаете, как найти максимальное вхождение слов из данного текстового файла?
Вот логика для получения верхнего элемента:
- Создать класс
CrunchifyComparableкоторый может хранить строковое значение слова и количество появлений, которые оно встречает. - Реализовать
Comparable interfaceдля этого классаsort by occurrences first and then alphabeticallyесли количество вхождений одинаково crunchifyFindMaxOccuranceметод, вы создаете новый списокCrunchifyComparableс вашей оригинальной карты. Вы добавляете записи этого в свой список- Сортировать этот список
- Возьмите n-первых элементов этого списка, используя subList
- Добавить строки в
Listи вы вернете это
Another most read : Найти больше информации о equals () и hashcode ()
Java-код:
CrunchifyFindMaxOccurance.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
пакет crunchify. ком . учебник ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. Файл ;
Импортировать Java. Ио. FileNotFoundException ;
Импортировать Java. Ио. FileReader ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Util. ArrayList ;
Импортировать Java. Util. Коллекция ;
Импортировать Java. Util. Коллекции ;
Импортировать Java. Util. HashMap ;
Импортировать Java. Util. Итератор ;
Импортировать Java. Util. Список ;
Импортировать Java. Util. Карта ;
Импортировать Java. Util. Карта. Вход ;
Импортировать Java. Util. Установить ;
общественности учебный класс CrunchifyFindMaxOccurance {
/ **
* @author Crunchify.com
* /
общественности статический недействительным main ( Строка [ ] аргументы ) бросает FileNotFoundException , IOException {
Файл файл знак равно новый Файл ( /Users/
BufferedReader bufferedReader знак равно ноль ;
BufferedReader знак равно новый BufferedReader ( новый FileReader ( файл ) ) ;
строка inputLine знак равно ноль ;
Карта < Строка , Целое число > crunchifyMap знак равно новый HashMap < > ( ) ;
пытаться {
в то время как ( ( inputLine знак равно bufferedReader . readLine ( ) ) ! знак равно ноль ) {
Строка [ ] слова знак равно inputLine . split ( [/ n / t / r.,;:!? () {}] ) ;
за ( int счетчик знак равно 0 ; счетчик < слова. длина ; counter ++ ) {
строка ключ знак равно слова [ счетчик ] . toLowerCase ( ) ; // удалить .toLowerCase для чувствительного к регистру результата.
если ( ключ . длина ( ) > 0 ) {
если ( crunchifyMap . get ( ключ ) == ноль ) {
crunchifyMap . положить ( ключ , 1 ) ;
} еще {
ИНТ значение знак равно crunchifyMap . получить ( ключ ) . intValue ( ) ;
значение ++ ;
crunchifyMap . положить ( ключ , значение ) ;
}
}
}
}
Установить < Карта . Вступление < Строка , Integer>> entrySet знак равно crunchifyMap . entrySet ( ) ;
Система. вне. println ( «Слова» + «/ т / т» + Количество случаев ) ;
за ( Карта . Вступление < Строка , Целое число > запись : entrySet ) {
Система. вне. println ( entry . getKey ( ) + «/ т / т» + запись. getValue ( ) ) ;
}
Список
Система. вне. println ( / nMaixmum Вхождение слова в файл: ) ;
за ( Строка результат : myTopOccurrence ) {
Система. вне. println ( ==> + результат ) ;
}
}
ловить ( Ошибка IOException ) {
Система. вне. println ( «Неверный файл» ) ;
} в конце концов {
bufferedReader . закрыть ( ) ;
}
}
/ **
* @param map
* = Все слова на карте
* @param n
* = Сколько топовых элементов вы хотите напечатать? Если n = 1, то будет напечатано слово с наибольшим вхождением. Если n = 2, то это
* напечатает 2 лучших слова вхождения.
* @ возвращает список строк
* /
общественности статический Список
List
за ( Карта . Вступление < Строка , Целое число > запись : карта. entrySet ( ) )
л. добавить ( новый CrunchifyComparable ( entry . GetKey ( ) , запись. getValue ( ) ) ) ;
Коллекции . сортировка ( л ) ;
Список
за ( CrunchifyComparable вес : л. подсписок ( 0 , н ) )
список. добавить ( с . WordFromFile + : + ш. numberOfOccurrence ) ;
вернуть список ;
}
}
учебный класс CrunchifyComparable инвентарь Сопоставимые
общественности строка wordFromFile ;
общественности ИНТ numberOfOccurrence ;
общественности CrunchifyComparable ( String wordFromFile , ИНТ numberOfOccurrence ) {
супер ( ) ;
это. wordFromFile знак равно wordFromFile ;
это. numberOfOccurrence знак равно numberOfOccurrence ;
}
@Override
общественности ИНТ compareTo ( CrunchifyComparable arg0 ) {
ИНТ crunchifyCompare знак равно Integer. сравнить ( arg0 . numberOfOccurrence , это. numberOfOccurrence ) ;
вернуть crunchifyCompare ! знак равно 0 ? crunchifyCompare : wordFromFile . compareTo ( arg0 . wordFromFile ) ;
}
@Override
общественности ИНТ hashCode ( ) {
окончательный ИНТ uniqueNumber знак равно 19 ;
ИНТ crunchifyResult знак равно 9 ;
crunchifyResult знак равно uniqueNumber * crunchifyResult + numberOfOccurrence ;
crunchifyResult знак равно uniqueNumber * crunchifyResult + ( ( wordFromFile == ноль ) ? 0 : wordFromFile . hashCode ( ) ) ;
вернуть crunchifyResult ;
}
@Override
общественности логический равно ( объект crunchifyObj ) {
если ( это == crunchifyObj )
вернуть правда ;
если ( crunchifyObj == ноль )
вернуть ложь ;
если ( getClass ( ) ! знак равно crunchifyObj . getClass ( ) )
вернуть ложь ;
CrunchifyComparable другой знак равно ( CrunchifyComparable ) crunchifyObj ;
если ( numberOfOccurrence ! знак равно другой. numberOfOccurrence )
вернуть ложь ;
если ( wordFromFile == ноль ) {
если ( другое . wordFromFile ! знак равно ноль )
вернуть ложь ;
} еще если ( ! wordFromFile . равно ( другое . wordFromFile ) )
вернуть ложь ;
вернуть правда ;
}
}
|
Файл примера1:
вход-file.txt
|
1
2
3
4
5
6
7
8
9
10
|
это является тестовое задание
это является тестовое задание
это является тестовое задание
это является тестовое задание
это является тестовое задание
это является тестовое задание
это является тестовое задание
это является тестовое задание
это тестовое задание
это
|
Выход:
|
1
2
3
4
5
6
7
|
слова Количество случаев
тестовое задание 9
этот 10
является 8
Maixmum вхождение Слова в файл :
== > это : 10
|
Файл примера 2:
|
1
|
этот а также а также а также затем а также этот
|
Выход:
|
1
2
3
4
5
6
7
|
слова Количество случаев
а также 4
этот 2
затем 1
Maixmum вхождение Слова в файл :
== > и : 4
|
Вы ищете больше учебных пособий по Java? Посмотрите на эту коллекцию .
0.00 (0%) 0 votes









