Aus irgendeinem Grund habe ich ständigen Zugriff auf das "Programm, das Java-Wörter zählt", das ich in meinem Programm gepostet habe. Also habe ich den Code in diesem Blog gepostet Ich habe es vor mehr als 10 Jahren geschrieben, aber wenn ich es mir jetzt ansehe, ist es mir peinlich, dass ich den generischen Typ für List nicht verwende und es verschiedene unreife Teile gibt.
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();
}
}
Daher kann ich ein so peinliches Programm nicht für immer in meinem Blog veröffentlichen, also habe ich es mit der Stream-Funktion von Java8 neu geschrieben.
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(
//Stellen Sie das List-Element so ein, wie es in der Map-Taste ist
Function.identity(),
//Ersetzen Sie das Listenelement durch 1 für den Kartenwert, damit es zählt
Collectors.summingInt(s->1))
);
System.out.println(map);
}
}
//{triple=2, puisan=2, evergreen=1}Wird an die Konsole ausgegeben
Die Stream-Funktion ist praktisch, nicht wahr? Im Vergleich zum vorherigen Lichtprogramm ist die Logik sauberer und sieht wunderschön aus.