Conceptos básicos de Java: método transversal de la colección de mapas

(1) Método 1: encontrar valor por clave

  • Primero obtenga la colección Set de todas las claves de la colección Map.
  • Recorra la colección Set de claves y luego extraiga el valor correspondiente a través de la clave.

API involucradas:

nombre del método ilustrar
Conjunto de teclas <K> Conjunto () Consigue el juego de todas las llaves
V get (tecla de objeto) obtener valor por clave

(2) Método 2: Pares clave-valor

  • Primero convierta la colección Map en una colección Set, y cada elemento de la colección Set es un tipo de implementación de par clave-valor.
  • Itera a través de la colección Set, luego extrae las claves y extrae los valores.

API involucradas:

nombre del método ilustrar
Establecer<Mapa.Entrada<K,V>> conjunto de entrada() Obtenga una colección de todos los objetos de par clave-valor
K getKey() obtener la clave
V obtener valor () obtener valor

(3) Método 3: expresión lambda

  • Gracias a la nueva tecnología Lambda expression iniciada por JDK8, proporciona una forma más sencilla y directa de recorrer la colección.

API involucradas:

nombre del método ilustrar
vacío predeterminado para cada (BiConsumer<? super K, ? super V>action) Combinando lambda para recorrer la colección de mapas

proceso:

mapas.forEach((k,v) -> {

        Sistema.salida.println(k + ":" + v);

});

(4) Los códigos de los tres métodos transversales son los siguientes:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

/**
 * Map集合遍历方式
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> maps = new HashMap<>();
        //无序,不重复,无索引
        maps.put("大大",23);
        maps.put("小小",21);
        maps.put("清清",20);
        maps.put("心心",24);
        System.out.println(maps);

        //1.键找值
        //1.1先拿到集合的全部键
        Set<String> keys = maps.keySet();
        //1.2遍历每个键,根据键提取值
        for (String key : keys) {
            int value = maps.get(key);
            System.out.println(key + ":" + value);
        }

        System.out.println(maps);//{大大=23, 小小=21, 心心=24, 清清=20}
        //2.键值对
        /**
         maps = {大大=23, 小小=21, 心心=24, 清清=20}
         使用foreach遍历Map集合,发现Map集合的键值对元素直接是没有类型的,所以不能使用foreach遍历集合
         可以通过调用Map的方法,entrySet把Map集合转换成Set集合形式 maps.entrySet()
         Set<Map.Entry<String,Integer>>entries = [(大大=23), (小小=21), (心心=24), (清清=20)]
         此时就可以使用foreach遍历
         */
        //2.1把Map集合转换成Set集合 快捷键:maps.entrySet() + ctrl+alt+v
        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        //2.2开始遍历
        for(Map.Entry<String, Integer> entry : entries){
            String key = entry.getKey();
            int value = entry.getValue();
            System.out.println(key + ":" + value);
        }

        System.out.println(maps);//{大大=23, 小小=21, 心心=24, 清清=20}
        //3.Lambda表达式
//        maps.forEach(new BiConsumer<String, Integer>() {
//            @Override
//            public void accept(String key, Integer value) {
//                System.out.println(key + ":" + value);
//            }
//        });
        
        //简化代码
        maps.forEach ((k, v) -> {System.out.println(k + ":" + v);});
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_61275790/article/details/130058807
Recomendado
Clasificación