[JAVA] Un programme qui compte le nombre de mots dans une liste

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.

Recommended Posts

Un programme qui compte le nombre de mots dans une liste
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Ordre de traitement dans le programme
Trouvez le nombre de jours dans un mois avec Kotlin
Un programme (Java) qui génère la somme des nombres pairs et impairs dans un tableau
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
Mesurer la taille d'un dossier avec Java
Création d'un exemple de programme en utilisant le problème d'un spécialiste des bases de données dans DDD Improvement 2
Obtenez le chemin défini dans la classe Controller de Spring Boot sous forme de liste
Création d'un exemple de programme en utilisant le problème d'un spécialiste des bases de données avec DDD Improvement 1
Spécialiste de la sécurité de l'automne 2017 J'ai vérifié la fréquence des mots qui apparaissaient le matin 2
Obtenez une liste de classes dans un package spécifique à Guava
Les objets de la liste étaient des références, non? Confirmation de
[Rails] Volume qui affiche les favoris et une liste de favoris
Extraire un élément spécifique de la liste des objets
Compter la fréquence d'apparition des mots dans une phrase par traitement de flux (Apache Apex)
Une explication rapide des cinq types de statique Java
Liste des appareils pouvant être prévisualisés avec Swift UI
Vérifiez la dépendance d'un artefact maven spécifique dans Coursier
Un mémo du programme que vous pouvez réaliser que la probabilité de lancer des dés est d'environ 1/6
Créer une base de données de tous les livres qui ont circulé au Japon au siècle dernier
Agréger le nombre de personnes tous les 10 ans à partir de la liste <Personne>
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique
[Swift] Lorsque vous voulez savoir si le nombre de caractères dans String correspond à un certain nombre ...
Une liste d'articles auto-satisfaisants sur les spécifications du langage qui ne vous aideront probablement pas directement dans votre programmation
Générez un numéro de série avec TableGenerator of Hibernate (JPA) et stockez-le dans l'ID de String.
Obtenez une instance proxy du composant lui-même dans Spring Boot
L'histoire selon laquelle la sortie standard change également fatalement le comportement du programme
Examiner la liste des polices disponibles dans AWS Lambda + Java
Un mémo qui conteneurise l'application de chat simple de Node.js + socket.io
Convertir un tableau de chaînes en une liste d'entiers en Java
Examinez la liste des ID de fuseau horaire disponibles dans la classe Java ZoneId
Obtenez l'URL publique du fichier privé de Flickr en Java
Une histoire qui a eu du mal avec l'introduction de Web Apple Pay
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse
Le problème que l'attribut du modèle User devient nul dans ActionMailer
Comment afficher une liste de chaînes dans JSF sous forme de chaînes séparées par des virgules
Créons une application TODO en Java 5 Changer l'affichage de TODO
Formulaire qui reçoit la valeur de l'élément répétitif dans Spring MVC
Faisons un custom_cop qui souligne le tremblement du nom
[Java] Supprimer les éléments de la liste
Une liste de rawValues pour UITextContentType.
Trier la liste des objets Java
Ceci et cela de JDK
Un mémorandum du problème FizzBuzz
Liste des membres ajoutés dans Java 9
Créer un programme Servlet dans Eclipse
Liste des types ajoutés dans Java 9
Nombre de chiffres de l'élément de type numérique
Créer une ArrayList qui vous permet de lancer et de récupérer les coordonnées d'un plan bidimensionnel
Correction pour empêcher l'augmentation du numéro de connexion à la base de données avec le fournisseur d'authentification personnalisé de l'exemple Cognos SDK
[Android] Développer un service permettant aux étudiants universitaires de vérifier l'état de fonctionnement des bus circulant dans l'université.
[Spring Boot] Liste des règles de validation qui peuvent être utilisées dans le fichier de propriétés pour les messages d'erreur