Java中的Map接口

Map

Map接口和Collection接口下的数据的存储形式不同,在Map中的元素由Map.Entry<K, V>来存放,K和V是一种映射的关系,一个key对应一个value,key不能重复,但是value是可以重复的。

HashMap

Map接口使用频率最高的实现类

  • 可以存null
  • 无序
  • 线程不同步

存储结构

hash表

JDK7及以前用数组和链表实现

JDK8及以后用数组链表和红黑树来实现

HashTable

线程同步的HashMap

TreeMap

用红黑树实现的map

使用前要存储的类要实现comparable接口

Map接口的基本使用

public class MapDemo {
    public static void main(String[] args) {
        //使用HashMap来创建Map对象
        Map<Integer, Integer> map = new HashMap<>();
        //向map中填充数据
        map.put(1, 10);
        //put方法返回key原本对应的value值,如果没有则返回null
        //如果原本有对应的value则用新的value替换原本的value
        System.out.println(map.put(2, 4));//返回值位null
        System.out.println(map.put(1, 11));//返回值位10,10会被替换成11
        //输出map
        System.out.println(map);
        //通过key值获取value的值
        map.get(1);
        //通过key值来移除对应的元素,返回值是被移除的value
        map.remove(1);
        //修改值
        map.replace(1, 1);
    }
}

Map的遍历

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

public class MapForDemo {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < 10; i ++ ) {
            map.put(i, i * i);
        }

        //先获取key的set再通过key来遍历
        Set<Integer> keySet = map.keySet();
        for (Integer key : keySet) {
            System.out.println(map.get(key));
        }
        //把map中的键值对转化为set再遍历
        Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
        for (Map.Entry<Integer, Integer> entry : entrySet) {
            System.out.println(entry.getKey() + "->" + entry.getValue());
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值