O tamanho de uma matriz não pode ser modificado. Se você quer uma matriz maior, precisa instanciar uma nova.
Uma solução melhor seria usar um ArrayList
que possa crescer conforme você precisar. O método ArrayList.toArray( T[] a )
devolve sua matriz, se você precisar desta forma.
List<String> where = new ArrayList<String>();
where.add( ContactsContract.Contacts.HAS_PHONE_NUMBER+"=1" );
where.add( ContactsContract.Contacts.IN_VISIBLE_GROUP+"=1" );
Se você precisar convertê-lo em uma matriz simples ...
String[] simpleArray = new String[ where.size() ];
where.toArray( simpleArray );
Mas a maioria das coisas que você faz com uma matriz também pode fazer com este ArrayList:
// iterate over the array
for( String oneItem : where ) {
...
}
// get specific items
where.get( 1 );
Use a
List<String>
, como umArrayList<String>
. É dinamicamente expansível, ao contrário de matrizes (consulte: Java efetivo 2ª edição, item 25: Preferir listas para matrizes ).Se você insistir em usar matrizes, poderá usar
java.util.Arrays.copyOf
para alocar uma matriz maior para acomodar o elemento adicional. Esta realmente não é a melhor solução, no entanto.Isso é
O(N)
porappend
.ArrayList
por outro lado, temO(1)
amortizou o custo por operação.Veja também
fonte
ArrayList
faz internamente.O Apache Commons Lang possui
retorna uma nova matriz, mas se você realmente estiver trabalhando com matrizes por algum motivo, talvez seja a maneira ideal de fazer isso.
fonte
Há outra opção que eu não vi aqui e que não envolve objetos ou coleções "complexos".
fonte
Não há método
append()
nas matrizes. Em vez disso, como já sugerido, um objeto List pode atender à necessidade de inserir elementos dinamicamente, por exemplo.Ou se você está realmente interessado em usar uma matriz:
mas esse é um tamanho fixo e nenhum elemento pode ser adicionado.
fonte
Como tangens disse, o tamanho de uma matriz é fixo. Mas você deve instanciar primeiro, caso contrário, será apenas uma referência nula.
Essa matriz pode conter apenas 10 elementos. Portanto, você pode acrescentar um valor apenas 10 vezes. No seu código, você está acessando uma referência nula. É por isso que não funciona. Para ter uma coleção crescente dinamicamente, use o ArrayList.
fonte
fonte
Eu fiz esse código! Ele funciona como um encanto!
Espero que você goste!!
fonte
Você precisa usar uma lista de coleções. Você não pode redimensionar uma matriz.
fonte
Se você deseja armazenar seus dados em um array simples como este
e você deseja adicionar alguns elementos, como números, por favor, StringBuilder, que é muito mais eficiente do que concatenar string.
Este é um método muito melhor para construir sua string e armazená-la em seu array 'where'.
fonte
Adicionando novos itens ao array String.
fonte
<code>
tag e isso teve problemas com os tipos genéricos. Tente evitar essa tag, pois ... ela tem problemas e indente seu código com 4 espaços em branco para obter a formatação correta. Eu fiz isso para sua pergunta :).Existem várias maneiras de adicionar um elemento a uma matriz. Você pode usar um temp
List
para gerenciar o elemento e, em seguida, convertê-lo novamenteArray
ou pode usá-java.util.Arrays.copyOf
lo e combiná-lo com genéricos para obter melhores resultados.Este exemplo mostra como:
Para usar esse método, basta chamá-lo assim:
Se você deseja mesclar duas matrizes, pode modificar o método anterior como este:
Agora você pode chamar o método assim:
Como eu mencionei, você também pode usar
List
objetos. No entanto, será necessário um pequeno hack para torná-lo seguro assim:Agora você pode chamar o método assim:
fonte
newArray[elements.length] = element;
, você quis dizernewArray[elements.length - 1] = element;
?Eu não sou tão experiente em Java, mas sempre me disseram que matrizes são estruturas estáticas que têm um tamanho predefinido. Você precisa usar um ArrayList ou um vetor ou qualquer outra estrutura dinâmica.
fonte
você pode criar uma lista de matrizes e usar
Collection.addAll()
para converter a matriz de cadeias de caracteres em sua lista de matrizesfonte
Você pode simplesmente fazer isso:
fonte
Se alguém realmente deseja redimensionar uma matriz, você pode fazer algo assim:
fonte
O tamanho da matriz não pode ser modificado. Se você precisar usar uma matriz, poderá usar:
fonte
Também é possível pré-alocar tamanho de memória grande o suficiente. Aqui está uma implementação simples da pilha: o programa deve produzir 3 e 5.
fonte