【2023.6.7】Map基础&Map的三种遍历方式

一些概念性内容:

单列集合只能一次添加一个元素;而双列集合(Map)可以一次添加一对元素(键、值)

键值对(Entry):键不能重复,值可以重复。键和值是一一对应的,每一个键只能找到自己对应的值。键+值的整体称为“键值对”或者“键值对对象”,Java中叫做“Entry对象”。

Map:分为HashMapTreeMap, HashMap里面又包括LinkedHashMap


①Map中常见的方法:

方法名称 说明
V put(K key , V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty( ) 判断集合是否为空
int size( ) 集合长度(键值对个数)

代码示例:

1.创建Map集合对象:
 

        Map map = new HashMap<>(); //键为String 值也为String

2.Map中的方法示例:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public  class Main{
    public static void main(String[] args){
        Map map = new HashMap<>(); //键为String 值也为String
        map.put("御坂美琴","白井黑子");
        map.put("桐谷和人","亚斯娜");
        map.put("大雄","静香");
        map.put("空","白"); // 添加键值对

        map.remove("大雄"); // 根据键删除键值对元素
        System.out.println(map); // 打印集合
        }
    }

运行结果:(输出是无序的)

{桐谷和人=亚斯娜, 御坂美琴=白井黑子, 空=白}

②Map集合的遍历方式:

1.键找值:keySet方法get方法通过键找到对应的值。(结合Collection的单列集合遍历方法

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("御坂美琴", "白井黑子");
        map.put("桐谷和人", "亚斯娜");
        map.put("大雄", "静香");
        map.put("空", "白");

        //键找值
        Set k = map.keySet(); //获取所有的键,并把它们全部放到单列集合k中
        //遍历单列循环(用Collection的三种遍历方式)
        for (String s : k) {
            String val = map.get(s);//通过遍历的键s找值val
            System.out.print(s + "  ");
            System.out.println(val);
        }

    }
}

2.键值对:entrySet方法把键值对都添加进单列集合。增强for(或其他单列集合遍历方式)遍历,getKey()方法获取键,用getValue()方法获取值。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("御坂美琴", "白井黑子");
        map.put("桐谷和人", "亚斯娜");
        map.put("大雄", "静香");
        map.put("空", "白");

        //键值对
        Set> en = map.entrySet();
        //遍历en集合,去得到里面的每一个键值对对象
        for (Map.Entry entry : en) {//运用增强for遍历集合获取键值对对象
            String k = entry.getKey();
            String val = entry.getValue();
            System.out.println(k + " " + val);
        }
    }

}

3.Lamda表达式:代码简便快捷。

示例一:

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

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("御坂美琴", "白井黑子");
        map.put("桐谷和人", "亚斯娜");
        map.put("大雄", "静香");
        map.put("空", "白");

        //Lamda表达式
        map.forEach(new BiConsumer() { // 匿名内部类
            @Override
            public void accept(String k, String val) {
                System.out.println(k + " " + val);
            }
        });
    }

}

示例二:

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

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("御坂美琴", "白井黑子");
        map.put("桐谷和人", "亚斯娜");
        map.put("大雄", "静香");
        map.put("空", "白");
        //Lamda表达式
        map.forEach((String k, String val) -> System.out.println(k + " " + val));
    }
}
    


③LinkedHashMap和TreeMap:

LinkedHashMap:输出的键有序,不重复,无索引。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        LinkedHashMap map = new LinkedHashMap<>();
        //添加键值对元素
        map.put("Bill", 2);
        map.put("Zone", 5);
        map.put("Ankha", 3);
        map.put("Link", 1);
        //输出
        System.out.println(map);
    }
}
//输出结果:{Bill=2, Zone=5, Ankha=3, Link=1}


TreeMap:键可排序,不重复,无索引。(默认键是从小到大排序)

{Ankha=3, Bill=2, Link=1, Zone=5}

你可能感兴趣的:(学习日志,java,学习)