on domingo, 11 de agosto de 2013
Nesse post vou trazer um tema muito legal em relação a concatenação de String em java, geralmente quando realizamos uma concatenação usamos o operador “+”. Mais ao usar o operador estamos fazendo um mal uso de concatenação, pois a concatenação usando “+” é custoso para a JVM.
Vamos comparar as forma de concatenação e verificar o tempo de processamento:
1) Concatenação usando “+”
1
2
3
4
5
6
String numeros = "";
 for (int i = 0; i<30000; i++)
 {
 numeros += i;
 }
 System.out.println(numeros.length());
No exemplo acima existe um loop de 30 mil,concatenado usando o operador “+” no meu PC a execução demorou 6 segundos, bom pode ser um valor de tempo pequeno mais imagine um for com valores que tende sempre a aumentar o tempo também vai fica cada vez maior e em uma maquina de requisitos inferiores isso vai ser um problema.
2) Concatenação usando StringBuilder ou StringBuffer(Versão mais antiga do java)
1
2
3
4
5
6
StringBuilder numeros = new StringBuilder();
 for (int i = 0; i<30000; i++)
 {
 numeros.append(i);
 }
 System.out.println(numeros.toString().length());
Para o mesmo loop o tempo foi zero segundos, como pode ser visto o tempo gasto no processamento da concatenação usando StringBuilder ou StringBuffer foi muito menor que a concatenação usando “+”. O uso do StringBuilder  é sempre recomendado para concatenação sem tiver usando java menores que o 1.5 pode ser usado o StringBuffer.
Essa é um boa dica para melhorar o desempenho do código e pode ter certeza que o uso vai deixar seu sistema mais rápido.
Por hoje é só pessoal....
Nesse post vou escrever sobre conjuntos Set que se encontra no pacote java.util.Set, o Set funciona de forma análoga ao conjunto na matemática onde não é permitido elementos duplicados.
Outra característica importante é que a ordem de inserção não garante a ordem dos elementos no conjunto, ao contrario da List que a ordem de inserção é a ordem dos elementos na lista.
Um conjunto é representado pela interface Set é tem com principais implementações as classes: HashSet,LinkedHashSet e TreeSet.
Ao contrario da List a interface Set não define o comportamento cada implementação tem seu próprio comportamento.
1. HashSet: É um conjunto não ordenado e também não classificado, a ordem de inserção não garante a ordem do elementos;
2. LinkedHashSet: É um conjunto ordenado e duplamente encadeado, com isso podemos iterar pelos elementos em ordem, mais é mais lenta que o HashSet pois a demora para registrar os nós vizinhos na inserção de um novo elemento;
3. TreeSet: É ordenada e classificada;

Por hoje é só pessoal...
Nesse post vou escrever sobre Collection em java e como usar alguns métodos para interagir com essas estrutura de dados tão importante.
Quando precisamos manipular grandes quantidades de dados devemos utilizar as estruturas de dados,que facilita nossa vida de programador.
Imagina se só existisse array trabalhar dinamicamente é muito complicado dado a limitação do próprio array.
A limitação de array é seu tamanho fixo e não pode ser acrecido dinamicamente, sendo quando cheio temos dificuldade de aumentar para um novo tamanho.
Para ter uma lista de elementos dinâmico podemos usar a List que são estruturas de dados de armazenamento sequencial assim com o array. Mais não possuem a limitação de tamanho fixo dos arrays.
List é uma interface em java que define os métodos que uma lista deve ter, as principais implementações são:
ArrayList, LinkedList e Vector. Cada implementação possuem sua característica própria. As classes que implementam a interface List são ordenadas através de seus índices.
1. ArrayList: Essa estrutura de dados tem com base uma array, mais ao contrario dos array pode tem seu tamanho alterado dinamicamente.
2. Vector: tem as mesma características do ArrayList, mais o processo de inserção é muito mais lenta que o ArrayList.
3. LinkedList: A diferença dessa estrutura de dados para o ArrayList é que o LinkedList é uma lista duplamente encadeada, isso permite que eu possa inserir uma elemento em qualquer posição sem a necessidade e a necessidade de realocação de todo o array.

Podemos aplicar o polimorfismo e instanciar as listas das seguintes formas:

  1. List lista = new ArrayList();
  2. List lista = new LinkedList();
  3. List lista = new Vector();
Vamos as métodos da lista:
  1. Adicionar elementos (add): Para adicionar elementos em uma lista só é preciso usar o método add(Object), como o parâmetro esperado é um Objeto então podemos adicionar qualquer tipo de dados na lista. 
List lista = .....;
lista.add(1);
lista.add("Fulano");
lista.add(110.34);
2 . Tamanho da lista: Para descobrir a quantidade de elementos adicionados na lista se usa o método size().
int quantidade = lista.size();// 3 elementos.

3 . Limpar a lista: Para limpar todos os elementos da lista podemos usar o método clear();
List lista = ....;
lista.add("João");
lista.add(20);

lista.clear();

int quantidade = lista.size();// 0 elementos

4. Busca a existência do elemento na lista: Para descobrir se um elemento existe ou não na lista podemos usar o método contains(Object).
List lista = new ArrayList();
lista.add("Ciclano");

Caso encontre o elemento na lista é retornado true caso contrario false.
boolean ehElemento = lista.contains("Ciclano");// Retorno true.

5 . Remover o elemento: As contrario do clear(), que remover todos os elementos o método remove(Object) remover da lista o elemento passado com parâmetro.

List list = ...
list.add( " Jonas " );
// x = true
boolean x = list.contains( " Jonas");
list.remove( " Jonas" );
// x = false
x = list.contains( " Jonas" );

Também podemos remover o elemento da lista pelo seu índice, mais nem sempre sabemos o index.
List list = ...
list.add( " Jonas " );
// x = true
boolean x = list.contains( " Jonas");
list.remove(0);
// x = false
 = list.contains( " Jonas" );

6. Recuperar elemento pelo index: Para obter o elemento através do índice podemos usar get(int); 

List list = ...
list.add( " Jonas" );
// nome = " Jonas "
String nome = list.get(0);
Esses são os principais métodos de uma lista existe muitos outros mais esses resume bem as funcionalidades de um lista dinâmica.

bom pessoal por hoje é só, duvidas reclamações fique a vontade para publicar nos comentários...