(I) Colección y colecciones
Ambos están ubicados debajo del paquete java.util, la diferencia es:
La colección es una interfaz de colección, con subinterfaces comunes como Listset, y es el primer nodo del gráfico de marco de colección. Proporciona una serie de métodos para realizar operaciones básicas en objetos de recolección.
Los métodos comunes son:
boolean add (e e) agregue elementos al contenedor; int size () Devuelve el número de elementos de la colección; boolean isEmpty () determina si el contenedor está vacío; Boolean contiene (objeto o) Si esta colección contiene el elemento especificado, devuelve verdadero y el método igual () se usará aquí; boolean eliminar (objeto o) elimina la instancia del elemento especificado; etc.
Collections es una clase de envoltorio que contiene varios métodos polimórficos estáticos para operaciones de recolección, que contiene algoritmos polimórficos operados en la colección, es decir, "envoltura", que devuelve una nueva colección compatible con la colección especificada, y algunas otras cosas.
Los métodos comunes son:
Void Sort (List) clasifica el contenido de la lista.
Cabe señalar aquí que (PS: la siguiente explicación sobre Sort () se extrae de una breve discusión sobre la matriz de objetos o la clasificación de la lista y los principios de clasificación de colecciones . Traza el origen de la clasificación de la lista y la colección, y la escribe muy claramente)
El cuerpo de clasificación en esta función () es Arrays.sort ().
@SupessWarnings ("sin control") Pública estática <t se extiende comparable <? Super t >> void sort (list <t> list) {object [] array = list.toarray (); Arrays.sort (matriz); int i = 0; ListIterator <T> it = list.ListIterator (); while (it.hasnext ()) {it.next (); it.set ((t) matriz [i ++]); }} En Arrays.sort (), se puede ver que se implementa a través de comparableTimSort.sort (objeto [] a): public static void sort (object [] array) {// comienza comparabletImSort.sort (matriz); // finalizar con el cambio de android} static void sort (objeto [] a) a static void sort (objeto [] a, int lo, int hi) a binarysort void static privado (objeto [] a, int lo, int hi, int inicio). En BinarySort, la parte utilizada para la comparación de tamaño es: Comparable <ject> pivot = (comparable) a [inicio]; int int right = start; afirmar a la izquierda <= a la derecha; while (izquierda <derecha) {int mid = (izquierda + derecha) >>> 1; if (pivot.compareto (a [medio]) <0) right = mid; de lo contrario a la izquierda = Mid + 1; }El único método de la interfaz comparable se utiliza en la búsqueda binaria: comparación (). Si todas las clases personalizadas se cargan en el contenedor y deben compararse, debe implementar la interfaz comparable o heredar la clase Comparator y anular el método CompareTo ().
int binarySearch (objeto de lista) Para contenedores de lista secuenciales, el método de media búsqueda se utiliza para encontrar el objeto especificado; Void Reverse (List) organiza los objetos en el contenedor de la lista en orden inverso; etc.
(Ii) iterador e iterable
Primero, el Itererable se encuentra debajo del paquete Java.Lang, y el iterador se encuentra debajo del paquete Java.util. En el marco de la colección, se definen tres métodos en la interfaz Iterator: Boolean Hasnext (); E Next (); Void Remound (). Iterable solo define un método: iterator (), el valor de retorno es un objeto que implementa la interfaz Iterator. La colección hereda la súper interfaz de ITerable, por lo que todas las clases de implementación en el marco de colección tienen el método Iterator (), y el polimorfismo permite que la referencia del iterador acceda a la parte (es decir, esos tres métodos) en la colección actual que implementa Iterator. Si necesita eliminar elementos en este momento, ya que Iterator completa el bloqueo en esta operación de colección, solo puede usar el método iterador remove () durante el recorrido de bucle con iterador, y no puede usar el método de eliminación (objeto) de la colección.
Entonces, ¿por qué tenemos que implementar la interfaz Iterable? ¿Por qué no implementar directamente la interfaz Iterator? De esta manera, ¿la clase de recolección puede heredar directamente estos tres métodos?
Eche un vistazo a las clases de recolección en JDK, como la familia List o la familia Set, que implementan la interfaz Iterable, pero no implementan directamente la interfaz Iterator.
Piense en ello con cuidado y tenga sentido.
Porque los métodos centrales de la interfaz Iterator Next () o HasNext () dependen de la posición de iteración actual del iterador.
Si la colección implementa directamente la interfaz Iterator, inevitablemente conducirá al objeto de recopilación que contiene los datos (puntero) de la posición de iteración actual.
Cuando se pasa una colección entre diferentes métodos, ya que la posición de iteración actual no está preestablecida, el resultado del método siguiente () se vuelve impredecible.
A menos que se agregue un método RESET () a la interfaz Iterator para restablecer la posición de iteración actual.
Pero en este caso, la colección solo puede tener una ubicación de iteración actual al mismo tiempo.
ITerable no es el caso, y cada llamada devuelve un iterador que cuenta desde cero.
Múltiples iteradores no interfieren entre sí.
El artículo anterior se basa en algunos puntos de conocimiento confusos (explicación detallada) en la colección Java. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.