Al comparar dos lista de números enteros usando el filtro java8

yogui:

Tengo un problema de la siguiente manera. Hay dos lista de números enteros a y b con igual tamaño. Ahora quiero comparar ambas valor de lista al mismo índice. Mi función devuelve una lista con las 2 valores. Primer valor es el recuento de mayor valor en la lista a. Segundo valor es el recuento de mayor valor en la lista B. Si ambos tienen mismo valor que ningún incremento en el recuento.

puedo obtener una idea de cómo se puede lograr en java8 utilizando Secuencia / filtro / predicados

Había retrun el método más antiguo en la versión de Java.

    static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
        List<Integer> list = new ArrayList<Integer>();
        int asize = 0;
        int bsize = 0;
        for (int i = 0; i <b.size();i++) {
            if(a.get(i) > b.get(i)) {
                asize++;
            }else if(a.get(i) < b.get(i)) {
                bsize++;
            }
        }
        list.add(asize);
        list.add(bsize);
        return list;
    }

por ejemplo 1. De entrada: a = 5 6 7 b = 3 6 10 de salida: 1 1 por ejemplo, 2. de entrada: a = 17 28 30 b = 99 16 8 de salida: 2 1

Ravindra Ranwala:

Primer filtro a cabo todos los valores iguales. A continuación, crear un mapa con una clave booleano, que representa si el valor dado en aes menor o mayor que el valor correspondiente en b. Finalmente utilizar el colector de conteo para obtener el recuento de cada categoría. Así es como se ve.

Collection<Long> gtAndLtCount = IntStream.range(0, a.size())
    .filter(i -> a.get(i) != b.get(i)).boxed()
    .collect(Collectors.partitioningBy(i -> a.get(i) < b.get(i), Collectors.counting()))
    .values();

Supongo que te gusta

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