X-Git-Url: https://git.piment-noir.org/?p=Project_POO.git;a=blobdiff_plain;f=exo5%2FMain.java;fp=exo5%2FMain.java;h=3e0f331bbaa4890a33b724ec1f265811dc3ad5fe;hp=c5b80c42e573d08078519a99ffb74f5df89fa749;hb=a1aa04de75e28577a5c1c28ff6cf25ca6b2f913c;hpb=3b1969267fdc47fa2abbd459d3ab1306b294bdb3 diff --git a/exo5/Main.java b/exo5/Main.java index c5b80c4..3e0f331 100644 --- a/exo5/Main.java +++ b/exo5/Main.java @@ -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 tm = new TreeMap(new StrComparator()); // default TreeMap comparator keep alphabetical order - TreeMap tm = new TreeMap(); + // NOTE: words comparaison is case insensitive and punctuation aware + TreeMap tm = new TreeMap(new StrComparator()); + // NOTE: words comparaison is case sensitive and punctuation aware + //TreeMap tm = new TreeMap(); 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 sm = tm.tailMap("milieu"); + System.out.println("SortedMap content of words inferior to the word \"milieu\":"); + SortedMap 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 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 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"); + } } }