Pour une raison quelconque, j'accède constamment au "programme qui compte les mots Java" dans mon programme chaque jour. Alors, j'ai posté le code publié sur ce blog Je l'ai écrit il y a plus de 10 ans, mais quand je le regarde maintenant, je suis gêné de ne pas utiliser le type générique pour List, et il y a diverses parties immatures.
Before.java
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class WordCounterTable {
private Map counterTable;
public WordCounterTable(){
this.counterTable = new HashMap();
}
public void count(List list){
for(Iterator ite = list.iterator();ite.hasNext();){
Object target = ite.next();
if(this.counterTable.get(target) == null){
this.counterTable.put(target,new Integer(1));
}else{
this.counterTable.put(target,
new Integer(
((Integer)this.counterTable.get(target)).intValue()+1)
);
}
}
}
public String printTableValue(){
StringBuffer buf = new StringBuffer();
for(Iterator ite = this.counterTable.keySet().iterator();ite.hasNext();){
Object key = ite.next();
buf.append("word:"+key+" count:"+this.counterTable.get(key)+"\n");
}
return buf.toString();
}
}
Donc, je ne peux pas continuer à publier un programme aussi embarrassant sur mon blog pour toujours, alors je l'ai réécrit en utilisant la fonction Stream de Java8.
WordCount.java
package test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.function.Function;
public class WordCount {
public static void main(String args[]){
List<String> list = Arrays.asList("triple","evergreen","puisan","triple","puisan");
Map<String,Integer> map = list.stream().collect(
Collectors.groupingBy(
//Définissez l'élément List tel qu'il est dans la clé Map
Function.identity(),
//Remplacez l'élément List par 1 pour la valeur Map afin qu'il compte
Collectors.summingInt(s->1))
);
System.out.println(map);
}
}
//{triple=2, puisan=2, evergreen=1}Est sortie vers la console
La fonction Stream est pratique, n'est-ce pas? Par rapport au programme d'éclairage précédent, la logique est plus propre et elle est magnifique.