dfd22af190b95c44f14d70c072a92882aabe5df9
2 import java
.util
.Scanner
;
3 import java
.io
.IOException
;
5 import java
.util
.TreeMap
;
6 import java
.util
.SortedMap
;
7 import java
.util
.stream
.Collectors
;
13 * @param String[] args main() function arguments array
15 public static void main(String
[] args
) {
16 // default TreeMap comparator keep alphabetical order
17 // NOTE: words comparaison is case insensitive and punctuation aware
18 TreeMap
<String
, Integer
> tm
= new TreeMap
<String
, Integer
>(new StrComparator());
19 // NOTE: words comparaison is case sensitive and punctuation aware
20 //TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
21 File f
= new File("test_file.txt");
23 Scanner sc
= new Scanner(f
);
24 while (sc
.hasNext()) {
25 String wordCursor
= sc
.next();
26 Integer count
= tm
.get(wordCursor
);
30 tm
.put(wordCursor
, count
+ 1);
34 catch (IOException e
) {
38 System
.out
.println("TreeMap full content:");
39 for (String wordCursor
: tm
.keySet()) {
40 System
.out
.println("Word \"" + wordCursor
+ "\" occured " + tm
.get(wordCursor
) + " times");
43 System
.out
.println("SortedMap content of words inferior to the word \"milieu\":");
44 SortedMap
<String
, Integer
> sm
= tm
.headMap("milieu");
45 for (String wordCursor
: sm
.keySet()) {
46 System
.out
.println("Word \"" + wordCursor
+ "\" occured " + sm
.get(wordCursor
) + " times");
49 System
.out
.println("Map content of exactly duplicated word inferior to the word \"milieu\":");
50 Map
<String
, Integer
> m1
= tm
.entrySet().stream()
51 .filter(map
-> map
.getKey().compareTo("milieu") < 0 && map
.getValue() == 2)
52 .collect(Collectors
.toMap(p
-> p
.getKey(), p
-> p
.getValue()));
53 for (String wordCursor
: m1
.keySet()) {
54 System
.out
.println("Word \"" + wordCursor
+ "\" occured " + m1
.get(wordCursor
) + " times");
57 System
.out
.println("Map content of duplicates with occurence between 2 and 5:");
58 Map
<String
, Integer
> m2
= tm
.entrySet().stream()
59 .filter(map
-> map
.getValue() >= 2 && map
.getValue() <= 5)
60 .collect(Collectors
.toMap(p
-> p
.getKey(), p
-> p
.getValue()));
61 for (String wordCursor
: m2
.keySet()) {
62 System
.out
.println("Word \"" + wordCursor
+ "\" occured " + m2
.get(wordCursor
) + " times");