Você está aqui: Java ::: Coleções (Collections) ::: Passos Iniciais |
Entendendo a classe ArrayListQuantidade de visualizações: 16316 vezes |
A classe ArrayList é uma implementação de array redimensionável da interface List. Esta classe implementa todas as operações opcionais de uma lista e permite todos os elementos, inclusive null. Além de implementar a interface List, esta classe fornece métodos para manipular o tamanho do array sendo usado internamente para armazenar a lista. Esta classe é quase idêntica à Vector, exceto pelo fato de que ela não é sincronizada. As operações size, isEmpty, get, set, iterator e listIterator são executadas em tempo constante. A operação add é executada em tempo constante amortizado, ou seja, adicionar n elementos exige um tempo O(n). Todas as outras operações são executadas em tempo linear (por assim dizer). O fator constante é baixo se comparado àquele da implementação de LinkedList. Cada cópia de ArrayList tem uma capacidade (capacity). A capacidade é o tamanho do array usado para armazenar os elementos da lista. É sempre igual ou maior que o tamanho da lista. À medida que elementos são adicionados à ArrayList, sua capacidade é aumentada automaticamente. Os detalhes da política de crescimento não são especificados além do fato de que adicionar um elemento tem custo de tempo constante amortizado. Uma aplicação pode aumentar a capacidade de uma instância da ArrayList antes de adicionar um grande número de elementos usando o método ensureCapacity. Isso pode reduzir a quantidade de realocação incremental. Observe que esta implementação não é sincronizada. Se múltiplos threads acessarem uma instância de ArrayList concorrentemente, e no mínimo um dos threads modificarem a estrutura da lista, ela deverá ser sincronizada externamente (uma modificação de estrutura é qualquer operação que adiciona ou exclui um ou mais elementos, ou explicitamente redimensiona o array de suporte; meramente alterar o valor de um elemento não é uma modificação de estrutura). Geralmente isso é conseguido sincronizando algum objeto que naturalmente encapsule a lista. Se tal objeto não existir, a lista deve ser "encapsulada" usando o método Collections.synchronizedList. A melhor hora de fazer isso é na hora da crição do objeto, para evitar acessos não-sincronizados acidentais à lista: List lista = Collections.synchronizedList( new ArrayList(...)); Observe que o comportamente fail-fast de um iterador não tem garanta de fábrica, ou seja, é impossível ter boas garantias de seu comportamente na ocorrência de modificações concorrente não sincronizadas. Iteradores fail-fast atiram exceções ConcurrentModificationException na base do melhor esforço. Assim, não é correto escrever programas que dependam desta exceção para funcionar corretamente: o comportamento fail-fast deve ser usado somente para detectar bugs. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
JavaScript - Como testar se todos os elementos de um array satisfazem uma condição em JavaScript usando a função every() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |