Java 集合框架 - Map

package map;

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

public class HashMapTest {
    /*
    * HashMap
    * 一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射
    * 基于hashing的原理,使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象
    * 当put()方法传递键和值时,会先对键调用hashCode()方法,计算并返回的hashCode是用于找到Map数组的bucket
    * 位置来存储Entry对象的,是非线程安全的,所以HashMap操作速度很快
    * */

    /*
    * 在数据的存储过程中,能够自动对数据进行排序,实现了SortedMap接口,它是有序的集合
    * TreeMap使用的存储结构是平衡二叉树,也称为红黑树
    * 默认排序规则:按照key的字典顺序来排序(升序),也可以自定义排序规则,要实现Comparator接口
    * */

    /*
    * HashMap可实现快速存储和检索,但缺点是包含的元素是无序的,适用于在Map中插入、删除和定位元素;
    * TreeMap能便捷地实现对其内部元素的各种排序,但其一般性能比HashMap差,适用于按自然顺序或自定义顺序
    * 遍历键(key)
    * Jdk1.7和Jdk1.8中HashMap的主要区别 - 底层实现由之前的“数组+链表”改为“数组+链表+红黑树”
    * 什么时候开始转变
    * 当链表节点较少时仍然是以链表存在,当链表节点较多时,默认是大于8时会转为红黑树
    * */
    public static void main(String [] args) {
//        HashMap<String, String> map = new HashMap<>();
        TreeMap<String,String> map = new TreeMap<>();

        // 往map里面放key-value
        map.put("A小明", "Guangzhou");
        map.put("B小黄", "Shanghai");
        map.put("C小黄", "Shanghai");
        map.put("D小黄", "Shanghai");

        System.out.println("=====Map=======");
        System.out.println(map);
        System.out.println("============");
        // 根据key获取value
        String value = map.get("小黄");
        System.out.println("value is " + value);

        // 判断是否包含某个key
        boolean isContains = map.containsKey("小明");
        System.out.println("包含小明" + isContains);

        // 返回map的元素数量
        int size = map.size();
        System.out.println("size = " + size);

        // 获取所有value集合
        Collection<String> collect = map.values();
        System.out.println(collect);

        // 获取所有key的集合
        Set<String> set = map.keySet();
        System.out.println(set);

        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        for (Map.Entry entry : entrySet) {
            System.out.println("key="+entry.getKey()+", value="+entry.getValue());
        }
        // 判断Map是否为空
        boolean isEmpty = map.isEmpty();
        System.out.println("是否为空:"+isEmpty);

        // 清空容器
        map.clear();
        isEmpty = map.isEmpty();
        System.out.println("是否为空:"+isEmpty);

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WUYANGEZRA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值