2010-06-22 6 views
4

J'essaye de comprendre s'il y a un moyen facile de compter le nombre de mots qui apparaissent dans le petit paragraphe (# 1) et le petit paragraphe (# 2).Java: Trouver combien de mots apparaissent dans les DEUX sources de données?

Généralement, Im déterminer combien il y a de chevauchement dans ces paragraphes mot par mot. Donc, si (# 1) contient le mot "heureux" et (# 2) contient le mot "heureux" qui serait comme une valeur +1.

Je sais que je pourrais utiliser un String.contains() pour chaque mot (# 1) appliqué à (# 2). Mais je me demandais s'il y avait quelque chose de plus efficace que je pourrais utiliser

Répondre

7

Vous pouvez créer deux ensembles s1 et s2, contenant tous les mots du premier et deuxième paragraphe respectivement, et les recouper: s1.retainAll(s2). Cela semble assez facile.

mise à jour
Works pour moi

Set<String> s1 = new HashSet<String>(Arrays.asList("abc xyz 123".split("\\s"))); 
    Set<String> s2 = new HashSet<String>(Arrays.asList("xyz 000 111".split("\\s"))); 
    s1.retainAll(s2); 
    System.out.println(s1.size()); 

Ne pas oublier d'enlever le mot vide des deux ensembles.

+0

Je tapais juste un algorithme compliqué mais c'est beaucoup plus propre lol. +1 pour mieux connaître l'API Java que moi. – Mike

+0

Sonne bien, va essayer et vous faire savoir si cela a fonctionné! – rockit

+0

Je continue d'obtenir 0 avec cette méthode. Im le tester avec un hashset de 3 mots vs un hashset de 3 mots ... chaque fois que le résultat est zéro ..., les ensembles ne sont pas ordonnés, un mot est commun entre les deux – rockit