Re:Tamanho de vetores multidimensionais

Opa!

Resposta 1:

Para você pegar o length dentro de um array mutidimensional basta você se lembrar de uma coisa:

O int[][] significa que int[] é um array de int[], portanto, cada elemento de int[] é um objeto do tipo int[].

Considerando isso, você pode ter acesso ao length da seguinte maneira:

int[][] m = new int[20][30];
int tam1 = m.length;
int tam2 = m[0].length; // Isso te daria o length do int[] dentro de m[0].

Resposta 2:

Não é possível. Arrays, em Java, têm tamanho fixo.

O que você pode fazer é descartar um array criado com 10 elementos e criar outro de tamanho diferente utilziando new tipo[n]…

Por exemplo:

int[] m = new int[20]; m = new int[30];

o primeiro objeto criado pelo new int[20] iria pro garbage, e m faria referência agora ao novo array de 30 elementos. Se você implementar um algoritmo para copiar os elementos de um objeto[] para o outro, é equivalente a ter um “setLength” da vida. Acho que em java mesmo tem a classe Arrays com alguns recursos bacanas pra fazer cópia, busca binária, etc. Não testei, apenas vi rapidamente.

Falou!

Mais uma pro hiram!!

Tudo uma questão de lógica.
Imagina o array multi como uma tabela (linhas e colunas).
Basta pegar uma linha da tabela e contar quantas colunas ela possui.

O exemplo do hiram deixa as coisas bastantes claras ^^

Legal. Pra completar, vale a pena teste este exemplo de referência.

Nem sempre o tamanho das colunas vão ser idênticos em um array bidimensional por exemplo:

class Teste {
    public static void main(String[] args) {
        int[][] m = { { 1, 2, 3, 4},
                      { 5, 6, 7},
                      { 8, 9},
                      { 10 }
                    };

        for (int i = 0; i < m.length; i++) {
            System.out.printf("Tam. linha %d: %d colunas\n", i + 1, m[i].length);
        }
    }
}

Saída:

Tam. linha 1: 4 colunas
Tam. linha 2: 3 colunas
Tam. linha 3: 2 colunas
Tam. linha 4: 1 colunas

Falou!

Galera, para eu poder pegar o tamanho de um vetor unidimensional eu uso

   [code] String[] newData = new String[tamanho];
    System.out.println(newData.length);[/code]

Mas quando desejo saber o tamanho de todas as dimensões de um vetor bidimensional ??
Oque uso??

Pergunta 2
Existe alguma maneira de se criar um vetor dinâmico a não ser dessa forma aqui ??

public void AlocacaoDinamica(int tamanho){ String[] newData = new String[tamanho];

No pascal existe o método SetLenght, existe alguma semelhante em java???

Valeu

Valeu ai a resposta ajudou em muito.