Cómo filtrar una lista con Java 8 corriente y la matriz de los valores startwith

Quentinb:

Tengo 2 listas, el que contiene una lista de números y la lista de nombres de otro un. He prefijo de los nombres con un número de la primera lista, seguido de un guión. Quiero filtrar la segunda lista en base a todos los números que se encuentran en la primera lista.

Lo que he tratado.

List<String> numberList = new ArrayList<>();
numberList.add("1_");
numberList.add("9_");

List<String> nameList = new ArrayList<>();
nameList.add("1_John");
nameList.add("2_Peter");
nameList.add("9_Susan");

List<String> filteredList = Stream.of(numberList.toArray(new String[0]))
                .filter(str -> nameList.stream().anyMatch(str::startsWith))
                .collect(Collectors.toList());

El código anterior se ejecuta sin error, pero el FilteredList está vacía. Es evidente que estoy haciendo algo mal.

El FilteredList sólo debe contener:

1_John

9_Susan

Eran :

Usted llama startsWithen el mal Strings (por ejemplo, se prueba si "1_".startsWith("1_John")en lugar de "1_John".startsWith("1_")).

Usted debe transmitir más nameListy utilizar numberListpara el filtrado:

List<String> filteredList = 
    nameList.stream()
            .filter(str -> numberList.stream().anyMatch(str::startsWith))
            .collect(Collectors.toList());

PS Stream.of(numberList.toArray(new String[0]))es redundante. Utilice numberList.stream()en su lugar.

Supongo que te gusta

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