X-Git-Url: https://git.piment-noir.org/?p=Project_POO.git;a=blobdiff_plain;f=exo5%2FMain.java;h=f8fac79d30962692271303ab403857440c90a36e;hp=953bdfe46f61bf06b962e85745c9feeacae93d06;hb=ca1bad47bb9de619e866d4febdf41eec5554e14c;hpb=437984e373831a86f42d66385270939a9d72f29b diff --git a/exo5/Main.java b/exo5/Main.java index 953bdfe..f8fac79 100644 --- a/exo5/Main.java +++ b/exo5/Main.java @@ -1,7 +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 { @@ -10,13 +13,16 @@ class Main { * @param String[] args main() function arguments array */ public static void main(String[] args) { - TreeMap tm = new TreeMap(); + // default TreeMap comparator keep alphabetical order + // 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; @@ -28,8 +34,32 @@ class Main { catch (IOException e) { e.printStackTrace(); } + + System.out.println("TreeMap full content:"); for (String wordCursor : tm.keySet()) { System.out.println("Word \"" + wordCursor + "\" occured " + tm.get(wordCursor) + " times"); } + + 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"); + } } }