Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não entendi implementação

Olá pessoal, fiz a implementação conforme exercício 10, mais não entendi algumas linhas do código ao qual irei comentar a baixo cada passo.

insira seu código aquipackage java_orientacao_objeto;

import java.util.ArrayList; import java.util.Collection;

public class TestaPerformance {

public static void main(String[] args) { System.out.println("Iniciando"); Collection teste = new ArrayList(); // criando lista long inicio = System.currentTimeMillis(); // iniciando variavel inicio com tempo int total = 30000; // iniciando variavel total for (int i = 0; i < total; i++) { //Iniciando for e atribuindo a comparação teste.add(i); // Adicionando na lista } for (int i = 0; i < total; i++) { // iniciando segundo for teste.contains(i); // não entendi } long fim = System.currentTimeMillis(); long tempo = fim - inicio; // não entendi System.out.println("Tempo gasto" + tempo); }

}

Por favor, poderiam me ajudar e me explicar obrigado.

1 resposta
solução!

Boa tarde Jean,

Segue abaixo nos comentários:

package java_orientacao_objeto;

import java.util.ArrayList; import java.util.Collection;

public class TestaPerformance {

public static void main(String[] args) {
    System.out.println("Iniciando");
    Collection teste = new ArrayList(); // criando lista long             
    inicio = System.currentTimeMillis(); // iniciando variavel inicio com tempo 
    int total = 30000; // iniciando variavel total 

    for (int i = 0; i < total; i++) { //Iniciando for e atribuindo a comparação 
        teste.add(i); // Adicionando na lista 
    }

     for (int i = 0; i < total; i++) { // iniciando segundo for 
        teste.contains(i); // o método contains verifica se o elemente passado por parâmetro existo dentro da coleção, ou seja, faz uma busca na coleção, para ver se acha aquele valor dentro dela.
    } 

    long fim = System.currentTimeMillis(); 
    long tempo = fim - inicio; // o método acima obtém a hora do sistema em milisegundos e coloca numa variável long, logo, se você tem duas varáveis long com algum horário em milisegundos e subtrair um pelo outro, a diferença desta subtração é o tempo que levou este processamento em milisegundos     
    System.out.println("Tempo gasto" + tempo); }

}

Agora sendo mais específico, isso servirá para você diferenciar o quão custoso em termos de desempenho é para um programa Java adicionar 30 mil número inteiros, e depois buscar 30 mil vezes dentro desta coleção com uma implementação de ArrayList, e depois troque a implementação para HashSet, e veja a diferença no resultado de tempo total.

A conclusão a que você chegará é: ArrayList é rápido para inserção dos elementos e mantém a ordem, mas é muito lento para operações de busca. HashSet é rápido para inserção dos elementos (A lista é um pouco mais), não mantém a ordem, mas é muito rápido para operações de busca, muito mais que o outro. Seguindo no curso entenderá o porque de cada um.

Abraço.