Explicando Java 8 Colector de interfaz / Firma del Método

user1955934:

Stream.collect(Collector<? super T, A, R> collector)

<R,A> R collect(Collector<? super T,A,R> collector)

Performs a mutable reduction operation on the elements of this stream using a Collector.

Collectors.groupingBy​(Function<? super T,​? extends K> classifier)

public static <T,​K> Collector<T,​?,​Map<K,​List<T>>> groupingBy​(Function<? super T,​? extends K> classifier)

Returns a Collector implementing a "group by" operation on input elements of type T, grouping elements according to a classification function, and returning the results in a Map.

Por favor alguien puede explicar los genéricos T, Ky R? Estoy muy confundido cómo este tipo de método puede ajustarse a las firmas anteriores:

List<Student> studentList = ....
Map<String, List<Student>> groupByTeachersMap = studentList.stream()
        .collect(Collectors.groupingBy(Student::getTeachersName));

No puedo ver cómo collectpuede vuelta Map<String, List<Student>>dada la firma anterior. ¿Puede alguien explicar cómo leer esta firma?

también:

Suponiendo que la siguiente clase de mínimos:

class Student {
    String teachersName;

    public String getTeachersName() {
        return teachersName;
    }
}

Se puede relacionar con su código, haciendo coincidir los tipos de retorno de entrada y salida en cada paso. Ejemplo, la firma para groupingBygradas como:

// <T, K> Collector<T, ?, Map<K, List<T>>> groupingBy(Function<? super T, ? extends K> classifier)       

y su aplicación específica como se detalla:

Collectors.groupingBy(new Function<Student, String>() {
    @Override
    public String apply(Student student) {
        return student.getTeachersName();
    }
})

lo que a su declaración de caso

Collector<Student, ?, Map<String, List<Student>>>

y además, si nos fijamos en la firma del collectdecir, la operación

// <R, A> R collect(Collector<? super T, A, R> collector)

por lo tanto, en su caso volviendo Rcomo en:

Map<String, List<Student>>

Supongo que te gusta

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