Categorías
Basics Java

¿Cómo se clasifican los desarrolladores en Java?

Al analizar el código fuente de una gran cantidad de proyectos Java de código abierto, encontré que los desarrolladores de Java clasifican con frecuencia de dos maneras. Uno está usando el sort() método de Collections o Arraysy el otro utiliza estructuras de datos ordenadas, como TreeMap y TreeSet.

1. Usando el método sort ()

Si es una colección, use el método Collections.sort ().

// Collections.sort
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
	public int compare(ObjectName o1, ObjectName o2) {
		return o1.toString().compareTo(o2.toString());
	}
});

Si es una matriz, use Arrays.sort() método.

// Arrays.sort
ObjectName[] arr = new ObjectName[10];
Arrays.sort(arr, new Comparator<ObjectName>() {
	public int compare(ObjectName o1, ObjectName o2) {
		return o1.toString().compareTo(o2.toString());
	}
});

Esto es muy conveniente si ya se ha configurado una colección o una matriz.

2. Uso de estructuras de datos ordenadas

Si es una lista o conjunto, use TreeSet para ordenar.

// TreeSet
Set<ObjectName> sortedSet = new TreeSet<ObjectName>(new Comparator<ObjectName>() {
	public int compare(ObjectName o1, ObjectName o2) {
		return o1.toString().compareTo(o2.toString());
	}
});
sortedSet.addAll(unsortedSet);
  System.arraycopy () frente a Arrays.copyOf () en Java

Si es un mapa, use TreeMap para ordenar. TreeMap está ordenado por clave.

// TreeMap - using String.CASE_INSENSITIVE_ORDER which is a Comparator that orders Strings by compareToIgnoreCase
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap - In general, defined comparator
Map<ObjectName, String> sortedMap = new TreeMap<ObjectName, String>(new Comparator<ObjectName>() {
	public int compare(ObjectName o1, ObjectName o2) {
		return o1.toString().compareTo(o2.toString());
	}
});
sortedMap.putAll(unsortedMap);

Este enfoque es muy útil, si desea realizar muchas operaciones de búsqueda para la colección. La estructura de datos ordenados dará una complejidad de tiempo de O(logn), que es menor que O(n).

3. Malas prácticas

Todavía existen malas prácticas, como el uso de algoritmos de clasificación autodefinidos. Tome el siguiente código, por ejemplo, no solo el algoritmo no es eficiente, sino que tampoco es legible. Esto sucede mucho en diferentes formas de variaciones.

double t;
for (int i = 0; i < 2; i++)
	for (int j = i + 1; j < 3; j++)
		if (r[j] < r[i]) {
			t = r[i];
			r[i] = r[j];
			r[j] = t;
		}

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *