Hello,
Someone can help toresolve the 3th step that doesn't work
Thanks
package fr.codegym.task.task18.task1804;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
/*
Les octets les plus rares
*/
public class Solution {
private static HashMap<Byte, Integer> map = new HashMap<>();
public static void main(String[] args) throws Exception {
BufferedReader lecteur = new BufferedReader(new InputStreamReader(System.in));
String nameFile = lecteur.readLine();
FileInputStream inputStream = new FileInputStream(nameFile);
long min = Integer.MAX_VALUE;
// write charactere with their frequence's value
while(inputStream.available()>0) {
byte data = (byte)inputStream.read();
if(map.containsKey(data)) {
map.put(data,map.get(data) + 1);
} else {
map.put(data,1);
}
}
inputStream.close();
// identify the greatest frequence
List<Integer> frequences = new ArrayList<>(map.values());
min = frequences.get(0);
for (int i = 1 ; i< frequences.size(); i++) {
if (min > frequences.get(i)) {
min = frequences.get(i);
}
}
//keep only the most frequent bytes on map
Iterator<Map.Entry<Byte,Integer>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<Byte,Integer> elt = iterator.next();
if(elt.getValue()>min) iterator.remove();
}
/*
//display the most frequent byte on screen
for (Map.Entry<Byte,Integer> paire : map.entrySet()){
System.out.print(paire.getKey()+" ");
}
*/
//display
Iterator<Map.Entry<Byte,Integer>> diplay = map.entrySet().iterator();
while(diplay.hasNext()) {
Map.Entry<Byte,Integer> elt = diplay.next();
System.out.print(elt.getKey()+" ");
}
//c:/temp/data2.txt
// System.out.println(maxUsingCollectionsMaxAndLambda(map));
}
}