Procesar una colección que toma dos elementos adyacentes a la vez (uso de flujo)

Tengo una lista de objetos que representan diferentes ciudades. Lo que quiero hacer con esa lista es obtener la suma de la distancia entre ciudades adyacentes en la lista. Entonces, si mi lista es l = {c1,c2,c3}, el resultado sería total sum = distance(c1,c2) + distance(c2,c3).

Estaba tratando de hacer uso de la API de transmisión, pero no pude encontrar una manera de procesar los elementos en una lista en este caso particular donde el procesamiento no es un elemento a la vez sino que involucra dos elementos adyacentes de la lista en cada paso .

Realmente agradecería si alguien tiene alguna idea de cómo aplicar la transmisión de esta manera, para echarme una mano.

Respuesta 1

Puedes usar esto:

double distance = IntStream.range(0, cities.size() - 1)
        .mapToDouble(i -> distance(cities.get(i), cities.get(i + 1)))
        .sum();

Esto crea IntStreamy asigna la distancia calculada para las ciudades vecinas. Al final se resumen todas las distancias.

Respuesta: 2

Posible duplicado: ¿Cómo enviar una solicitud HTTP en Java? Tengo un código Java ejecutándose en un applet y quiero enviar el puntaje más alto con un clic de un botón de regreso al PHP donde puede ser manipulado ...

Tengo una lista de objetos que tienen un valor de enumeración llamado AssetType, ¿es posible usar el método serveAll () para ordenar la lista de modo que solo se mantengan los objetos con AssetType.BANK_ACCOUNT? Gracias en ...

He implementado Room Persistence Library en mi aplicación. Usando esto, estoy 1.Agregando datos a una tabla 2.Displaying 3.Eliminando la tabla Im Haciendo estos tres pasos en un bucle. Pero el problema aquí es el contenido de la tabla ...

Estoy tratando de escribir un mergesort de subprocesos múltiples y estoy teniendo lo que para mí son problemas muy confusos. No estoy completamente al tanto de las reglas de cómo los hilos comparten / usan variables ... Por ejemplo, si están dentro de ...