Las tres colecciones principales de Java (1): Lista

Contenedor Jave: interfaz de colección e interfaz de mapa

Hay principalmente interfaz de lista, interfaz de conjunto, interfaz de cola (cola) en la interfaz de colección

Lista representa una colección repetible ordenada (almacenada dentro y fuera), que puede guardar elementos nulos.
Bajo la interfaz: ArrayList , LinkedList , Vector

================================================ ===========

ArrayList : la capa inferior es una matriz de objetos y los datos de la matriz se manipulan mediante subíndices. La longitud inicial de la matriz es 10, cuando el número esté completamente ensamblado, se ampliará a 1,5 veces

/**1. 可以装多个不同类型的数据,初始长度是10个*/
private Object[] value;

/**2. 可以记录当前数据的个数 int size()*/
private int size;

Ventajas: consulta, modificación y adición secuencial más rápidas debido a los subíndices
Desventajas: eliminación e inserción más lentas

================================================ ===============

LinkedList : Basado en variables, la capa inferior es una lista doblemente enlazada
. Los datos, la dirección de la variable anterior y la dirección de la siguiente variable se almacenan en la clase

/**
* 自定义单向链表
*/
private class Node {
    
    
	/**Object类型变量,用来保存数据*/
	Object value;
	/**Node类型变量,用来保存下一个Node对象的地址*/
	Node next;
	
	public Node(Object value) {
    
    
		this.value = value;
	}
}

Ventajas: eliminar e insertar más rápido, cambiar directamente los puntos de nodo superior e inferior de la posición de eliminación.
Desventajas: consultar, modificar y agregar secuencialmente, porque no hay un subíndice real y es necesario recorrerlo.

================================================ =============

Vector : Es un ArrayList seguro para subprocesos. Los métodos en Vector se sincronizan mediante la palabra clave sincronizada, y la expansión dinámica es 2 veces. (Siempre que se mencione la seguridad de subprocesos, el rendimiento general será bajo)

================================================ ============

4 métodos de recorrido : for, foreach, Iterator (iterador unidireccional), ListIterator (iterador bidireccional)

1. Para: debido a que la lista se basa en una matriz, puede usar subíndices

		//通过普通for循环,利用集合size()方法和get(int index)	(不常用)
		for (int i = 0; i < list.size(); i++) {
    
    
			//根据下标获取元素
			System.out.println(list.get(i));
		}

2 、 para cada uno

		//()因为ArrayList间接实现了Iterable接口 
		for (Object object : list) {
    
    
			System.out.println(object);
		}

		//lamda表达式
		list.foreach(System.out::println);

3. Iterador (iterador unidireccional)

		/*
		 * 迭代器:一个集合对象可以获取多个迭代器对象(多次调用方法),指针都是在初始位置(第一个元素前面)
		 * 迭代器是靠指针,所以对于这种单向迭代器,只能使用一次
		 */
		Iterator iterator = list.iterator();//获取单向迭代器对象
		//先判断,再获取元素,用while循环,只要有下一个就一直获取
		while (iterator.hasNext()) {
    
    //判断是否有下一个元素
			//获取当前元素
			System.out.println(iterator.next());
			//在使用迭代器遍历集合的时候,不能使用集合自己的方法(增删改)操作集合对象
//			list.remove(iterator.next());
			iterator.remove();//只能使用迭代器自己的方法操作
		}

4. listIterator (iterador bidireccional)

		ListIterator listIterator = list.listIterator();
		//正向迭代
		while (listIterator.hasNext()) {
    
    //判断是否有下一个元素
			//获取当前元素
			System.out.println(listIterator.next());
		}
		
		//反向迭代
		while (listIterator.hasPrevious()) {
    
    //判断是否有上一个元素
			//获取当前元素
			System.out.println(listIterator.previous());
		}
		//所以可以一直用

Supongo que te gusta

Origin blog.csdn.net/ExceptionCoder/article/details/107578330
Recomendado
Clasificación