Cómo hacer un método que devuelva un arrayList que ha ordenado el número de Strings en cada fila del archivo

Entonces, ¿lo que quieres hacer es ordenar una lista en función de la longitud de su elemento?

Si ese es el caso, entonces crear un comparador y pasarlo a través del método de clasificación de Java funcionaría bien.

Sería algo como esto:

class LengthComparator implementa Comparator {
public int compare (Cadena [] a, Cadena [] b) {
retorno a.length – b.length;
}
}

Así es como lo usarías:

Collections.sort (yourList, new LengthComparator ());

No intenté compilarlo todavía, por lo que pueden producirse algunos errores, pero se entiende la idea.

Tenga en cuenta que la clasificación de las 2 matrices que tienen la misma longitud se tratan de la misma manera en el orden de clasificación, por lo que cualquiera de ellas puede aparecer primero.

Una versión más corta utiliza las expresiones Java 8 Lambda. No necesita crear un comparador aquí.

Collections.sort (yourList, (a, b) -> a.length – b.length);

La clase Collections / Arrays tiene un método de clasificación estático, que también incluye un comparador de costum.

Como otras respuestas ya le han dado esta opción, aquí hay otra usando transmisiones:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;

Prueba de clase pública {

public static void main (String [] args) {
ArrayList inputList = new ArrayList () {{
add (nueva cadena [] {“2”, “2”});
add (nueva cadena [] {“3”, “3”, “3”});
add (nueva cadena [] {“1”});
add (nueva cadena [] {});
}};

Comparador final byLengthReversed = Comparator.comparing (strArray -> strArray.length, Comparator.reverseOrder ());

ArrayList result = (ArrayList ) inputList.stream ()
.filter (strArray -> strArray.length! = 0)
.sorted (byLengthReversed) //.thenComparando para encadenar más comparadores
.collect (Collectors.toList ());

result.stream (). forEach (arr -> {
System.out.println (Arrays.toString (arr));
});

result.stream ()
.flatMap (Arrays :: stream)
.forEach (System.out :: println);
}

}