Red de conocimiento informático - Aprendizaje de programación - Por qué la lista de colecciones en Java puede atravesar la colección

Por qué la lista de colecciones en Java puede atravesar la colección

Las colecciones de listas y conjuntos son las dos estructuras de datos más comunes en Java. Ambos son subconjuntos de Colección. Hoy presentaremos brevemente su recorrido y conversión mutua.

1. Recorrido de listas

Hay tres métodos de recorrido:

/**

* Tres listas de recorrido

* @author Propietario

*

*/

*/

clase pública ListTest {

public static void main(String[] args) {

Lista lista = new ArrayList();

lista.

lista. agregar("a");

lista.add ("b");

lista.add("c"); "c"); // Se pueden agregar datos repetidos

// El método transversal es un iterador

for(Iterator iterator = list.if(Iterator iterator = list.iterator( );iterator.hasNext();){

Valor de cadena = iterator.next()

System.out.println(value); >

}

//Método transversal 2 Bucle Superfor

for (Valor de cadena: lista){

System.out.println(value);

}

// Método transversal tres

for(int i=0;i

Sistema.

}

}

}

Analice estos tres recorridos, primero El primero es el recorrido del iterador, que bloquea los datos durante la ejecución, lo que tiene un rendimiento seguro y una baja eficiencia;

El segundo es la nueva sintaxis de Java, que mejora el bucle for, en el que también se llama al iterador internamente;

El tercer método es utilizar la matriz directamente, que es el más rápido, pero habrá problemas de seguridad de subprocesos múltiples.

El principio es el siguiente:

ArrayList usa matrices en la parte inferior para guardar datos y acceder a los datos en una matriz, por supuesto, usar directamente el índice de la matriz es lo más rápido, lo que equivale a leer datos directamente desde la memoria. iterador, encapsulado por foreach; el iterador atraviesa el final Para acceder a los datos a través del índice, el método get correspondiente está disponible en el código fuente.

El recorrido de conjunto es similar a Lista. Dado que set no tiene un método get, el tercer método es imposible.

Resumen: considere usar el segundo método y simplemente mejore el bucle for<; /p>

p>

2. Convertir lista y conjunto entre sí:

Este requisito generalmente no es mucho, solo ingrese el código directamente:

/ * *

* Conversión de lista a conjunto (Establecer en lista)

*/

Lista pública estática SetToList(Set conjunto ) {

List();

list.addAll(set);

Devolver lista;

}

Implementado usando genéricos. Pero vale la pena señalar que los datos se pierden al convertir una lista en un conjunto y se pierden los duplicados.