Aprendizaje de colección de contenedores de Java (dos)

Seis. Iterador

Use Iterator para atravesar elementos de contenedor (Lista / Conjunto / Mapa)

Los iteradores nos brindan una forma unificada de atravesar el contenedor

Iterador para recorrer la lista

	public static void testIteartorList() {
    
    
		List<String> list=new ArrayList<>();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		Iterator<String>  iter=list.iterator();
		while(iter.hasNext()) {
    
    //看作指针移动
			String temp=iter.next();
			System.out.println(temp);
		}	
	}	

Conjunto de recorridos de iterador

	public static void testIteartorSet() {
    
    
		Set<String> set=new HashSet<>();
		set.add("aa");
		set.add("bb");
		set.add("cc");
		Iterator<String>  iter=set.iterator();
		while(iter.hasNext()) {
    
    //看作指针移动
			String temp=iter.next();
			System.out.println(temp);
		}	
	}	

El iterador atraviesa el mapa (1)

1. En los nodos donde se almacenan las claves y los valores en el Mapa, primero obtenga el nodo del conjunto (ss) a través de map.entrySet ();
2. Luego atraviese el conjunto

	public static void testIteartorMap() {
    
    
		Map<Integer,String> map=new HashMap<>();
		map.put(100,"aa");
		map.put(200,"bb");
		map.put(300,"cc");
		//获得结点
		Set<Entry<Integer,String>> ss=map.entrySet();	//import java.util.Map.Entry;
		
		Iterator<Entry<Integer, String>> iter=ss.iterator();
		
		while(iter.hasNext()) {
    
    
			Entry<Integer, String> temp=iter.next();//得到的是结点
			
			System.out.println(temp.getKey()+"```"+temp.getValue());
		}	
	}	

El iterador atraviesa el mapa (2)

	public static void testIteartorMap() {
    
    
		Map<Integer,String> map=new HashMap<>();
		map.put(100,"aa");
		map.put(200,"bb");
		map.put(300,"cc");

		//获得键的集合
		Set<Integer>keySet=map.keySet();	//import java.util.Map.Entry;
		
		Iterator<Integer> iter=keySet.iterator();
		
		while(iter.hasNext()) {
    
    
			Integer key=iter.next();		
			System.out.println(key+"```"+map.get(key));
		}	
	}	

Resumen de métodos para atravesar colecciones

1. Recorre la lista

Método uno:
bucle for ordinario

for(int i=0;i<list.size();i++){
    
    //list为集合的对象名
    String temp = (String)list.get(i);
    System.out.println(temp);
}

Método 2:
mejorar el bucle for (¡use genéricos!)

for (String temp : list) {
    
    
System.out.println(temp);
}

Método 3:
usar iterador (1)

		Iterator<String>  iter=list.iterator();
		while(iter.hasNext()) {
    
    //看作指针移动
			String temp=iter.next();
			System.out.println(temp);
		}	

/同理
		for(Iterator iter= list.iterator();iter.hasNext();){
    
    
   		 String temp = (String)iter.next();
  		 System.out.println(temp);
		}

Método 4:
usar iterador (2)

Iterator  iter =list.iterator();
while(iter.hasNext()){
    
    
    Object  obj =  iter.next();
    iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式!
    System.out.println(obj);
}

2. Atraviesa el conjunto

Método uno:
mejorar el bucle for

for(String temp:set){
    
    
System.out.println(temp);
}

Método 2:
usar iterador

		Iterator<String>  iter=set.iterator();
		while(iter.hasNext()) {
    
    //看作指针移动
			String temp=iter.next();
			System.out.println(temp);
		}	
		
		/同理
		
		for(Iterator iter = set.iterator();iter.hasNext();){
    
    
   			 String temp = (String)iter.next();
   			 System.out.println(temp);
		}

3. Recorre el mapa

Método 1:
obtener valor de acuerdo con la clave

		Map<Integer, Man> maps = new HashMap<Integer, Man>();
		//获得键的集合
		Set<Integer>keySet=map.keySet();	//import java.util.Map.Entry;
		for(Integer id : keySet){
    
    
			System.out.println(maps.get(id).name);
		}	
		
		/
		Iterator<Integer> iter=keySet.iterator();
		while(iter.hasNext()) {
    
    
			Integer key=iter.next();		
			System.out.println(key+"```"+map.get(key));
		}	
	}	

Método dos:
use entrySet

		//获得结点
		//import java.util.Map.Entry;
		Set<Entry<Integer,String>> ss=map.entrySet();	
		//指结点的迭代器
		Iterator<Entry<Integer, String>> iter=ss.iterator();
		
		while(iter.hasNext()) {
    
    
			Entry<Integer, String> temp=iter.next();//得到的是结点
			
			System.out.println(temp.getKey()+"```"+temp.getValue());
		}	
			
			
			
		Set<Entry<Integer, Man>>  ss = maps.entrySet();
		for (Iterator iterator = ss.iterator(); iterator.hasNext();) {
    
    
  	 		 Entry e = (Entry) iterator.next(); 
   			 System.out.println(e.getKey()+"--"+e.getValue());
   		 }

Siete. Herramientas de colecciones

La clase java.util.Collections proporciona métodos auxiliares para ordenar, completar y buscar elementos de Set, List y Map.

Es una clase auxiliar, no una interfaz de colección.

Métodos comunes de herramientas de colecciones

proyecto Valor
ordenación vacía (lista) Ordene los elementos en el contenedor Lista, la regla de clasificación es ordenar en orden ascendente
void shuffle (Lista) Organizar aleatoriamente los elementos en el contenedor Lista
anular reverso (lista) Disposición inversa de elementos en el contenedor Lista
relleno vacío (Lista, Objeto) Reescribe todo el contenedor List con un objeto específico
int binarySearch (Lista, Objeto) Para los contenedores de listas secuenciales, se utiliza un método de búsqueda binaria para encontrar objetos específicos.

Ejemplo

public class TestCollections {
    
    
	public static void main(String[] args) {
    
    
		List<String> list=new ArrayList<>();
		for(int i=0;i<10;i++) {
    
    
			list.add("dj"+i);		
		}
		System.out.println(list);
		
		//随机排列List中的元素
		Collections.shuffle(list);
		System.out.println(list);
		
		//逆序排列List
		Collections.reverse(list);
		System.out.println(list);
		
		//按照递增顺序排列,自定义的的类用Comparable接口。
		Collections.sort(list);
		System.out.println(list);
		
		//二分法查找(折半查找),返回索引值
		System.out.println(Collections.binarySearch(list, "dj9"));
	}
}

Resumen
1. Colección representa un grupo de objetos, lo que significa concentrar y recopilar, lo que significa recopilar algunos datos.
2. Dos subinterfaces de la interfaz Colección:
1) Los elementos de la Lista están en orden y se pueden repetir. Las clases de implementación más utilizadas son ArrayList, LinkedList y vector.
Ø Características de ArrayList: alta eficiencia de consulta, baja eficiencia de adición y eliminación y subproceso inseguro.
Ø Características de LinkedList: baja eficiencia de consulta, alta eficiencia de adición y eliminación, e hilos inseguros.
Ø características vectoriales: seguridad de subprocesos, baja eficiencia, otras características son similares a ArrayList.
2) Los elementos del conjunto no tienen orden y no se pueden repetir. Las clases de implementación más utilizadas son HashSet y TreeSet.
Ø Características de HashSet: adopta un algoritmo hash para lograr una alta eficiencia de consulta y eficiencia de adición y eliminación.
Ø Características de TreeSet: Los elementos almacenados deben ordenarse internamente. Por lo tanto, nuestra clase correspondiente necesita implementar la interfaz Comparable. De esta forma, el tamaño entre objetos se puede comparar de acuerdo con el método compareTo () y se puede realizar una clasificación interna.
3. La clase que implementa la interfaz Map se utiliza para almacenar pares clave-valor. Las clases de implementación de la interfaz Map incluyen HashMap y TreeMap. Los pares clave-valor almacenados en la clase Map se identifican mediante claves, por lo que los valores clave no se pueden repetir.
4. El objeto Iterator se llama iterador, que se utiliza para realizar convenientemente la operación transversal de los elementos en el contenedor.
5. La clase java.util.Collections proporciona herramientas y métodos para manipular Set, List y Map.
6. En las siguientes situaciones, es posible que necesitemos volver a escribir el método equals / hashCode:
1) Ponga nuestros objetos personalizados en HashSet para su procesamiento.
2) Necesitamos procesar nuestro objeto personalizado como la clave de HashMap.
3) Después de colocar el objeto personalizado en el contenedor Colección, se pueden llamar a métodos como remove y contains.
7. Se han agregado genéricos después de JDK1.5. Los beneficios de los genéricos:
1) Garantizar la seguridad de los datos al agregar datos a la colección.
2) No se requiere fundición al atravesar los elementos de la colección.

Supongo que te gusta

Origin blog.csdn.net/weixin_43792004/article/details/100011800
Recomendado
Clasificación