Le regroupement des éléments de boucle imbriqués en fonction de la première variable d'itération en Java

Sojimanatsu:

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.

Erythrée:

Itérer sur votre sentenceliste. Pour chaque phrase itérer sur votre keywordliste. 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);
    }
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=232035&siteId=1
conseillé
Classement