package lab;

import java.util.ArrayList;
import java.util.List;

/**
 * Laboratorio, parte 2: mide, sin pretender precisión, cuánto tarda contains.
 * Ya mide un ArrayList; agreguen la misma medición con un HashSet y comparen.
 * Ejecutar con: java -cp build lab.ContainsTiming
 */
public class ContainsTiming {

    static final int N = 100_000;
    static final int LOOKUPS = 1_000;

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            list.add(i);
        }

        long start = System.nanoTime();
        int found = 0;
        for (int i = 0; i < LOOKUPS; i++) {
            if (list.contains(N - 1 - i)) {         // cerca del final: el peor caso de la lista
                found++;
            }
        }
        long micros = (System.nanoTime() - start) / 1_000;
        IO.println("ArrayList: " + LOOKUPS + " contains en " + micros + " µs (" + found + " encontrados)");

        // TODO: lo mismo con un HashSet<Integer> con los mismos N números.
    }
}
