La agrupación de los elementos de bucle anidado basado en la primera variable de iteración en Java

Sojimanatsu:

Tengo 2 enumera una para la sentencia por las palabras clave. La idea es comprobar si la frase tiene las palabras clave. y ponerlos en una lista para cada oración en orden.

Lo siento si esto ya se duplica aquí con antelación.

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");

Mi idea era crear 2 bucles anidados para cada lista:

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 salida de este es:

dog
good
this
cats
milk
beautiful
are

La salida deseada sería:

[this,good,dog]
[cats,milk]
[are,beautiful]

Así es como conseguir todas las palabras clave existentes, en el orden de la frase, no relacionado con el fin palabras clave.

y el grupo entonces las palabras clave existentes para cada frase, como en el orden de la existencia.

Espero que quede claro. Realmente agradecería cualquier idea. no tiene que seguir el mismo método.

Eritrea:

Iterar sobre su sentencelista. Para cada iterate frase sobre su keywordlista. Agregue cada palabra clave encontrado encuentra en un tempList, ordenar la tempList por el índice de palabra clave en la frase y, por último agregar cada tempList a una lista de listas. Ejemplo:

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);
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232037&siteId=1
Recomendado
Clasificación