2021-03-11

Map集合知识点总结

详细demo演示:day18pagage

一、Map集合
特点:1、是双列集合,一个元素包含两个值(key,value)
2、key和value的数据类型可以相同,也可不同
3、key和value是一一对应的关系
4、key不可重复,value可重复
5、key,value都可为null

常用的方法:
put(K key,V value):添加元素
remove(K key):通过key删除元素
get(K key):通过key获取元素
containsKey(Object key):判断集合是否包含key

常用的实现类:
1、HashMap<K key,V value>:implements Map<K key,V value>
特点:(1)底层是哈希表(数组+链表/红黑树)
(2)无序(元素的存取顺序可能不一致)
(3)实现不同步(多线程,速度快,不安全)
2、LinkedHashMap<K key,V value>:extends HashMap<K key,V value>
特点:(1)底层是哈希表+链表
(2)有序

Map集合的遍历
有两种方式:
1、键找值的方式
步骤:(1)Map中的keySet()方法,将所有的key取出,存到set集合中
(2)使用迭代器/增强for循环,遍历set,获取每一个key
(3)Map中的get(K Key),通过key找到value

package day18;

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

public class Demo01Map {
    public static void main(String[] args) {
        //demo01();
        demo02();
    }

    private static void demo02() {
        Map<String,Integer> map = new HashMap<>();
        map.put("yjqNB",18);
        map.put("卢文慧",17);
        map.put("煞笔",20);
        map.put("猪比",60);
        Set<String> strings = map.keySet();
        System.out.println(strings);
        for (String s : strings) {
            Integer a = map.get(s);
            System.out.println(a);
        }
    }

    private static void demo01() {
        Map<String,Integer> map = new HashMap<>();
        map.put("yjqNB",19);
        map.put("卢文慧",18);
        Integer integer = map.remove("yjqNB");
        System.out.println(integer);
        System.out.println(map);
        map.put("煞笔",20);
        map.put("猪比",60);
        boolean a = map.containsKey("煞笔");
        boolean b = map.containsValue(30);
        System.out.println(a);
        System.out.println(b);
        Integer integer1 = map.get("鲁温慧");
        System.out.println(integer1);

    }
}

2、键值对对象的方式
步骤:(1)Map中的entrySet()方法,将所有的Entry对象取出,存到set集合中
(2)使用迭代器/增强for循环遍历s,获取每一个Entry对象
(3)Entry对象中的getKey()、getValue()方法,获取键、值

package day18;

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

public class Demo02EntrySet {
    public static void main(String[] args) {
        demo01();
    }

    private static void demo01() {
        Map<String,Integer> map = new HashMap<>();
        map.put("yjqNB",18);
        map.put("卢文慧",17);
        map.put("煞笔",20);
        map.put("猪比",60);
        Set<Map.Entry<String, Integer>> set = map.entrySet();
        System.out.println(set);
        System.out.println("----------------------------------");
        for (Map.Entry<String, Integer> entry : set) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key);
            System.out.println(value);
        }
    }
}

二、LinkedHashMap集合
LinkedHashMap<K key,V value>:extends HashMap<K key,V value>
特点:1、key不能重复
2、有序

三、Hashtable集合
Hashtable<K key,V value>:implements Map<K key,V value>
特点:1、底层是哈希表
2、实现同步的(单线程,安全、速度慢)
3、key,value都不能为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值