Java学习路线(14)——Map集合类

一、介绍

概念

  • Map集合是一种双列集合,每个元素包含两个数据。
  • 元素格式:【key=value】键值对元素
  • Map又称为 “键值对集合”

Map集合格式: {key1=value1,key2=value2,key3=value3,…}


二、Map集合的特点

Map家族图
在这里插入图片描述

1、说明:

  • 使用最多的Map集合是HashMap。
  • 重点是HashMap、LinkedHashMap,TreeMap。

2、体系特点:

  • 由键决定获取的值。
  • Map的键是无序、不重复、无索引的,值不做要求。
  • Map重复键相继覆盖前面的键值。
  • Map的键值对都可以为null。

三、Map集合API

由于Map集合是双列集合的父接口,它的功能为所有双列集合通用功能。

常用方法API

方法说明
V put(K key,V value)添加元素
V remove(Object key)根据键删除元素
V get(Object key)根据键获取元素
void clear()清空集合
boolean containsKey(Object key)判断集合中是否包含指定的键
boolean containsValue(Object value)判断集合中是否包含指定的值
Set keySet()获取集合中所有的键
Collection values()获取集合中所有的值
boolean isEmpty()判断集合是否为空
int size()获取集合长度
Map<K,V> putAll(Map<K,V> M)合并集合

四、Map的遍历方法

1、键找值

主要用于对象-value的键值对集合。

(1)流程

  • 获取键列表【Map.keySet()】
  • 根据键查找值【Map.get(key)】

(2)示例

class Main{
    public static void main(String[] args) {
        /*查找商品名为goods3的价格是多少?*/
        Map<String,Double> map = new HashMap<>();
        map.put("goods1",30.7);
        map.put("goods2",62.5);
        map.put("goods3",20.8);
        map.put("goods4",78.5);
        for (String key : map.keySet()) {
            if (key.equals("goods3")){
                System.out.println(map.get(key));
                break;
            }
        }
    }
}

/*打印结果*/
20.8

2、键值对

主要用于对象-value的键值对集合。

(1)流程

  • 获取所有键值对对象集合 【Set<Map.Entry<K,V>> entrySet()】
  • 获取键【K getKey()】
  • 获取值【V getValue()】

(2)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

/*获取键值对对象*/
Set<Map.Entry<String, Double>> entries = map.entrySet();

/*遍历获取键与值*/
for (Map.Entry<String, Double> entry : entries) {
	System.out.println(entry.getKey() + "==>" + entry.getValue());
}

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

3、lambda表达式
(1)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

map.forEach((k,v)-> System.out.println(k + "==>" + v));

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

五、Map的三种实现类
1、HashMap
特点: 无序、不重复、无索引,依赖hashCode()和equals()保证的唯一。若键要存储自定义对象,需要重写hashCode()和equals()。
底层: Hash表,每个元素包含两个数据

2、LinkedHashMap
特点: 有序、不重复、无索引,保证存储和取出的元素顺序一致。
底层: Hash表,双链表机制记录存储顺序。

3、TreeMap
特点: 可排序、不重复、无索引,只对键数据默认升序排序或自定义排序。
底层: 与TreeSet底层相同。
实现排序的方式:

  • 类实现Comparable接口
  • 集合自定义Comparator比较器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zain_horse

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

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

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

打赏作者

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

抵扣说明:

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

余额充值