Estoy tratando de transformar una Lista de matrices de cadenas en matrices de objetos 2D Object[][].

Esto es lo que tengo hasta ahora. ¿Es esto correcto?

private static Object[][] listToObject2dConvert(List<String[]> convertor) {
    Object[][] array = new Object[convertor.size()][];

    for (int i = 0; i < array.length; i++) {
        array[i] = new Object[convertor.get(i).length];
    }

    for (int i = 0; i < convertor.size(); i++){
        for (int j = 0; j < convertor.get(i).length; j++) {
            array[i][j] = convertor.get(i).length;
        }
    }
    return array;
}
0
ska 19 feb. 2020 a las 20:15

2 respuestas

La mejor respuesta

La respuesta depende de si necesita copiar el contenido de String[] s, o si es aceptable usar esas matrices exactas.

Si puede mantener las matrices exactas, sería más fácil hacer lo siguiente:

return convertor.toArray(Object[][]::new);

Sin embargo, si necesita copiar los valores fuera de la matriz, podría usar secuencias para resolverlo fácilmente:

return converter.stream()
                .map(s -> Arrays.copyOf(s, s.length, Object[].class))
                .toArray(Object[][]::new);
2
Daniel 19 feb. 2020 a las 17:29

Prueba esto.

    public static void main(String[] args) {
        List<String[]> convertor = 
              List.of(new String[]{"a","b","c"}, new String[]{"e","f","g"});
        Object[][] objs = listToObject2dConvert(convertor);
        for (Object[] o : objs) {
            System.out.println(Arrays.toString(o));
        }
    }
    // just assign the array that's in the List to the 2D array column entry.
    private static Object[][] listToObject2dConvert(List<String[]> convertor){
        Object[][] array= new Object[convertor.size()][];
        int i = 0;
        for (String[] s : convertor) {
            array[i++] = s;
        }
        return array;
    }
2
WJS 19 feb. 2020 a las 17:25