Conseguir el objeto de secuencia en el método Colectores tomap utilizando el método de referencias en Java 8

Saurav Ojha:

Estoy tratando de iterar una lista utilizando stream()y poniendo en un mapa, donde la clave es el elemento propio vapor, y el valor es una AtomicBoolean, es cierto.

List<String> streamDetails = Arrays.asList("One","Two");
toReplay = streamDetails.stream().collect(Collectors.toMap(x -> x.toString(), new AtomicBoolean(true)));

Me sale el siguiente error en tiempo de compilación.

Type mismatch: cannot convert from String to K
The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>) in the type Collectors is not applicable for the arguments ((<no type> x) -> {}, 
     AtomicBoolean)

¿Qué podría estar haciendo mal, ¿qué voy a sustituir a mi x -> x.toString()con?

ernest_k:

new AtomicBoolean(true)es una expresión que no es válido para el segundo parámetro a Collectors.toMap.

toMapaquí querría una Function<? super String, ? extends AtomicBoolean>(la intención de convertir un elemento de flujo (o tipo String) a un valor de mapa de su tipo deseado, AtomicBoolean), y un argumento correcto podría ser:

Collectors.toMap(x -> x.toString(), x -> new AtomicBoolean(true))

Que también se puede escribir usando Function.identity:

Collectors.toMap(Function.identity(), x -> new AtomicBoolean(true))

Supongo que te gusta

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