exo5: add filtred maps from the original tree map.
[Project_POO.git] / exo5 / Main.java
CommitLineData
437984e3
JB
1import java.io.File;
2import java.util.Scanner;
3import java.io.IOException;
a1aa04de 4import java.util.Map;
437984e3 5import java.util.TreeMap;
fb7a0378 6import java.util.SortedMap;
a1aa04de 7import java.util.stream.Collectors;
2260b7d6
JB
8
9class Main {
10
11 /**
12 * The main() function
13 * @param String[] args main() function arguments array
14 */
15 public static void main(String[] args) {
80eafbcb 16 // default TreeMap comparator keep alphabetical order
a1aa04de
JB
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>();
437984e3
JB
21 File f = new File("test_file.txt");
22 try {
23 Scanner sc = new Scanner(f);
24 while (sc.hasNext()) {
25 String wordCursor = sc.next();
a1aa04de 26
437984e3
JB
27 Integer count = tm.get(wordCursor);
28 if (count == null) {
29 count = 0;
30 }
31 tm.put(wordCursor, count + 1);
32 }
33 sc.close();
34 }
35 catch (IOException e) {
36 e.printStackTrace();
37 }
fb7a0378
JB
38
39 System.out.println("TreeMap full content:");
437984e3
JB
40 for (String wordCursor : tm.keySet()) {
41 System.out.println("Word \"" + wordCursor + "\" occured " + tm.get(wordCursor) + " times");
42 }
fb7a0378 43
a1aa04de
JB
44 System.out.println("SortedMap content of words inferior to the word \"milieu\":");
45 SortedMap<String, Integer> sm = tm.headMap("milieu");
143582d5
JB
46 for (String wordCursor : sm.keySet()) {
47 System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
fb7a0378 48 }
a1aa04de
JB
49
50 System.out.println("Map content of duplicates inferior to the word \"milieu\":");
51 Map<String, Integer> m1 = tm.entrySet().stream()
52 .filter(map -> map.getKey().compareTo("milieu") < 0 && map.getValue() == 2)
53 .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
54 for (String wordCursor : m1.keySet()) {
55 System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
56 }
57
58 System.out.println("Map content of duplicates with occurence between 2 and 5:");
59 Map<String, Integer> m2 = tm.entrySet().stream()
60 .filter(map -> map.getValue() >= 2 && map.getValue() <= 5)
61 .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
62 for (String wordCursor : m2.keySet()) {
63 System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
64 }
2260b7d6
JB
65 }
66}