Necesitaba algo así, así que fui a las colecciones de commons y usé el SetUniqueList
, pero cuando ejecuté una prueba de rendimiento, descubrí que no parece optimizado en comparación con el caso si quiero usar ay Set
obtener un Array
usando el Set.toArray()
método.
La SetUniqueTest
tomó 20: 1 vez para llenar y luego travesía 100.000 Cuerdas que comparan a la otra aplicación, que es una gran diferencia acuerdo.
Entonces, si te preocupa el rendimiento, te recomiendo que uses Set and Get an Array en lugar de usar el SetUniqueList
, a menos que realmente necesites la lógica del SetUniqueList
, entonces tendrás que verificar otras soluciones ...
Método principal del código de prueba :
public static void main(String[] args) {
SetUniqueList pq = SetUniqueList.decorate(new ArrayList());
Set s = new TreeSet();
long t1 = 0L;
long t2 = 0L;
String t;
t1 = System.nanoTime();
for (int i = 0; i < 200000; i++) {
pq.add("a" + Math.random());
}
while (!pq.isEmpty()) {
t = (String) pq.remove(0);
}
t1 = System.nanoTime() - t1;
t2 = System.nanoTime();
for (int i = 0; i < 200000; i++) {
s.add("a" + Math.random());
}
s.clear();
String[] d = (String[]) s.toArray(new String[0]);
s.clear();
for (int i = 0; i < d.length; i++) {
t = d[i];
}
t2 = System.nanoTime() - t2;
System.out.println((double)t1/1000/1000/1000);
System.out.println((double)t2/1000/1000/1000);
System.out.println(((double) t1) / t2);
}
Saludos,
Mohammed Sleem