exo5: add filtred maps from the original tree map.
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 6 Apr 2018 09:03:00 +0000 (11:03 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 6 Apr 2018 09:03:00 +0000 (11:03 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
exo4/Main.java
exo5/Main.java
exo5/StrComparator.java

index 48b93918da3f8d2cd432e601d7c1af81b0f4c50c..a83fab4e457f8454e0a91041b05bfb142c24b42e 100644 (file)
@@ -39,7 +39,7 @@ class Main {
                 }
             }
             catch (ParseException e) {
-
+                e.printStackTrace();
             }
         }
     }
index c5b80c42e573d08078519a99ffb74f5df89fa749..3e0f331bbaa4890a33b724ec1f265811dc3ad5fe 100644 (file)
@@ -1,8 +1,10 @@
 import java.io.File;
 import java.util.Scanner;
 import java.io.IOException;
+import java.util.Map;
 import java.util.TreeMap;
 import java.util.SortedMap;
+import java.util.stream.Collectors;
 
 class Main {
 
@@ -11,15 +13,17 @@ class Main {
      * @param String[] args main() function arguments array
      */
     public static void main(String[] args) {
-        //TreeMap<String, Integer> tm = new TreeMap<String, Integer>(new StrComparator());
         // default TreeMap comparator keep alphabetical order
-        TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
+        // NOTE: words comparaison is case insensitive and punctuation aware
+        TreeMap<String, Integer> tm = new TreeMap<String, Integer>(new StrComparator());
+        // NOTE: words comparaison is case sensitive and punctuation aware
+        //TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
         File f = new File("test_file.txt");
         try {
             Scanner sc = new Scanner(f);
             while (sc.hasNext()) {
                 String wordCursor = sc.next();
-                //NOTE: words comparaison is case sensitive and punctuation aware
+
                 Integer count = tm.get(wordCursor);
                 if (count == null) {
                     count = 0;
@@ -37,10 +41,26 @@ class Main {
             System.out.println("Word \"" + wordCursor + "\" occured " + tm.get(wordCursor) + " times");
         }
 
-        System.out.println("SortedMap content after the word \"milieu\":");
-        SortedMap<String, Integer> sm = tm.tailMap("milieu");
+        System.out.println("SortedMap content of words inferior to the word \"milieu\":");
+        SortedMap<String, Integer> sm = tm.headMap("milieu");
         for (String wordCursor : sm.keySet()) {
             System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
         }
+
+        System.out.println("Map content of duplicates inferior to the word \"milieu\":");
+        Map<String, Integer> m1 = tm.entrySet().stream()
+            .filter(map -> map.getKey().compareTo("milieu") < 0 && map.getValue() == 2)
+            .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
+        for (String wordCursor : m1.keySet()) {
+            System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
+        }
+
+        System.out.println("Map content of duplicates with occurence between 2 and 5:");
+        Map<String, Integer> m2 = tm.entrySet().stream()
+            .filter(map -> map.getValue() >= 2 && map.getValue() <= 5)
+            .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
+        for (String wordCursor : m2.keySet()) {
+            System.out.println("Word \"" + wordCursor + "\" occured " + sm.get(wordCursor) + " times");
+        }
     }
 }
index b79708366d1ef9540c90333c3f8731837419af39..0ce8f871570db793e2293de0d0a9a9a45b964b91 100644 (file)
@@ -3,7 +3,7 @@ import java.util.Comparator;
 class StrComparator implements Comparator<String> {
 
     public int compare(String str1, String str2) {
-        return str1.compareTo(str2);
+        return str1.compareToIgnoreCase(str2);
     }
 
 }