J'ai 2 listes un pour une phrase pour les mots-clés. L'idée est de vérifier si la peine a les mots-clés. et les mettre dans une liste pour chaque phrase dans l'ordre.
Je suis désolé si cela est déjà reproduit ici à l'avance.
List <String> sentence= new ArrayList <>();
sentence.add("this is a good dog");
sentence.add("cats drink milk");
sentence.add("Animals are beautiful creatures");
List <String> keyword= new ArrayList <>();
keyword.add("dog");
keyword.add("cats");
keyword.add("beautiful");
keyword.add("good");
keyword.add("are");
keyword.add("this");
keyword.add("milk");
Mon idée était de créer 2 boucles imbriquées pour chaque liste:
for (int b = 0; b < sentence.size(); b++) {
for (int c = 0; c < keyword.size(); c++) {
if (sentence.get(b).contains(keyword.get(c))) {
System.out.println(keyword.get(c));
}
}
}
La sortie de c'est:
dog
good
this
cats
milk
beautiful
are
La sortie désirée serait:
[this,good,dog]
[cats,milk]
[are,beautiful]
Il est donc comme obtenir tous les mots-clés existants, dans l'ordre de la peine, non liée à l'ordre des mots-clés.
et le groupe alors les mots-clés existants pour chaque phrase, comme dans l'ordre de l'existence.
L'espoir, il est clair. Apprécierais vraiment des idées. n'a pas à suivre la même méthode.
Itérer sur votre sentence
liste. Pour chaque phrase itérer sur votre keyword
liste. Ajouter chaque mot - clé trouvé trouvée dans un tempList, trier le tempList par l'indice de mot - clé dans la phrase et enfin ajouter chaque tempList à une liste de listes. Exemple:
public static void main(String[] args) {
List <String> sentence= new ArrayList <>();
sentence.add("this is a good dog");
sentence.add("cats drink milk");
sentence.add("Animals are beautiful creatures");
List <String> keyword= new ArrayList <>();
keyword.add("dog");
keyword.add("cats");
keyword.add("beautiful");
keyword.add("good");
keyword.add("are");
keyword.add("this");
keyword.add("milk");
List<List<String>> result = new LinkedList<>();
for(String sen: sentence){
List<String> tempList = new ArrayList<>();
for(String key: keyword){
if(sen.contains(key)){
tempList.add(key);
}
}
tempList.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return sen.indexOf(o1) - sen.indexOf(o2) ;
}
});
result.add(tempList);
}
for(List<String> r : result){
System.out.println(r);
}
}