obtener el índice de la lista de tamaños min en un arrayList usando corriente java

Zak Zak:

Tengo una lista de lista de números enteros, como lista1 = (1,2,3) y lista2 = (0,1).

mi lista de listas contiene lista1 y lista2. Podría contiene más pero para el ejemplo que tomó sólo dos listas.

La cuestión es conseguir que el índice de la lista con el mínimo uso de flujo de java.

Aquí está mi programa y que funcione utilizando únicamente el método de bucle.

import java.util.ArrayList;

public class Example {

     public static void main( String[] args ) {


         ArrayList<Integer> list1 = new ArrayList<>();
         list1.add(1);list1.add(2);list1.add(3);

         ArrayList<Integer> list2 = new ArrayList<>();
         list2.add(0);list2.add(1);

         ArrayList<ArrayList<Integer>> listOLists = new ArrayList<>();
         listOLists.add(list1);
         listOLists.add(list2);
         printTheIndexOfTheListWithTheMinSize(listOLists);
     }

    private static void printTheIndexOfTheListWithTheMinSize( ArrayList<ArrayList<Integer>> listOLists ) {
        int minSize  = listOLists.get(0).size();
        int minIndex = 0;
        int i=0;
        for ( ArrayList<Integer> list:  listOLists ) {

            if (list.size()<minSize)
            {
                minSize = list.size();
                minIndex=i;
            }
            i++;

        }
        System.out.println(minIndex);
    }
}

¿Me puede dar una pista de cómo hacer que el uso de la API de Java corriente.

Tenga en cuenta que voy a llamar a este método muchas veces en un calcul pesado, por lo que el awnser debe tomar en consideración que.

JB Nizet:

En realidad, no elegante, ya que requiere el boxeo y unboxing, pero ...

Optional<Integer> minIndex = 
    IntStream.range(0, list.size())
             .boxed()
             .min(Comparator.comparingInt(i -> list.get(i).size()));

Supongo que te gusta

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