Eu venho de um plano de fundo php e, em php, existe uma array_size()
função que diz quantos elementos na matriz são usados.
Existe um método semelhante para uma String[]
matriz? Obrigado.
Eu venho de um plano de fundo php e, em php, existe uma array_size()
função que diz quantos elementos na matriz são usados.
Existe um método semelhante para uma String[]
matriz? Obrigado.
Respostas:
Sim, .length
(semelhante a uma propriedade, não um método):
String[] array = new String[10];
int size = array.length;
array.length
Na verdade, é um membro final da matriz, não um método.
Além disso, provavelmente é útil notar que, se você tiver uma matriz multidimensional, poderá obter a respectiva dimensão apenas anexando um '[0]' à matriz que está consultando até chegar ao eixo / tupla / dimensão apropriada.
Provavelmente, isso é melhor explicado com o seguinte código:
public class Test {
public static void main(String[] args){
String[][] moo = new String[5][12];
System.out.println(moo.length); //Prints the size of the First Dimension in the array
System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
}
}
Qual produz a saída:
5
12
Matrizes são objetos e possuem um campo de comprimento.
String [] haha = {"olle", "bulle"};
haha.length seria 2
Em java, há um length
campo que você pode usar em qualquer matriz para descobrir seu tamanho:
String[] s = new String[10];
System.out.println(s.length);
Se você deseja uma função para fazer isso
Object array = new String[10];
int size = Array.getlength(array);
Isso pode ser útil se você não souber que tipo de matriz você possui, por exemplo, int [], byte [] ou Objeto [].
A resposta é "Todos eles". Uma matriz java é alocada com um número fixo de slots de elemento. O atributo "length" indica quantos. Esse número é imutável por toda a vida útil da matriz. Para um equivalente redimensionável, você precisa de uma das classes java.util.List - onde é possível usar o método size () para descobrir quantos elementos estão em uso.
No entanto, há "Em uso" e depois há Em uso . Em uma matriz de objetos de classe, é possível ter slots de elementos cujos elementos são objetos nulos, mesmo que contem no atributo length, mas nas definições da maioria das pessoas, eles não estão em uso (YMMV, dependendo do aplicativo). Não há função interna para retornar as contagens nulas / não nulas.
Os objetos de lista têm ainda outra definição de "Em uso". Para evitar a criação / destruição excessiva das estruturas de armazenamento subjacentes, normalmente há algum preenchimento nessas classes. É usado internamente, mas não é contado no método size () retornado. E se você tentar acessar esses itens sem expandir a Lista (por meio dos métodos add), receberá uma exceção de índice ilegal.
Portanto, para Listas, você pode ter "Em Uso" para elementos confirmados não nulos, Todos os elementos confirmados (incluindo elementos nulos) ou Todos os elementos, incluindo o espaço de expansão atualmente alocado.
Todas as respostas acima são adequadas. O importante a observar é que as matrizes têm o atributo length, mas não o método length. Sempre que você usa strings e matrizes em java, os três modelos básicos que você pode enfrentar são:
Não é realmente a resposta para sua pergunta, mas se você quiser ter algo como uma matriz que possa crescer e encolher, não use uma matriz em java. Você provavelmente é o melhor usando ArrayList ou outra implementação de lista.
Você pode chamar size () para obter o tamanho.