java集合框架(一)Map的常见使用及循环的五种方式

前言

在Java的集合框架中,Map接口用于存储键值对,提供了一种基于键进行查找和操作的数据结构。Map接口的实现类提供了丰富的方法来操作键值对,例如添加、删除、更新和查找。本文将详细介绍Java中的Map接口及其常见实现类,包括HashMap、TreeMap和LinkedHashMap,并提供一些示例代码。

一、Map 概述

Map接口是一个键值对的集合,它继承自Collection接口中的size()和isEmpty()等方法,同时还提供了根据键查找值的方法,以及添加、删除和更新键值对的方法。在Java中,Map接口有几个常见的实现类,每个实现类都具有不同的性能和用途。

1、HashMap:基于哈希表实现,具有快速的查找和插入操作,适用于需要快速查找键值对的场景。
2、TreeMap:基于红黑树实现,可以对键进行排序,并提供了一系列与排序相关的方法,适用于需要对键进行排序的场景。
3、LinkedHashMap:基于哈希表和链表实现,保持键值对的插入顺序,适用于需要保持插入顺序的场景。

二、Map常见使用方法

HashMap是Map接口的一个常见实现类,它基于哈希表实现,可以提供快速的查找和插入操作。以下是一些常用的HashMap方法:

属性作用
put(K key, V value)将指定的键值对添加到HashMap中
remove(Object key)从HashMap中移除指定键的键值对
get(Object key)返回指定键对应的值
containsKey(Object key)检查HashMap中是否包含指定的键
containsValue(Object value)检查HashMap中是否包含指定的值
size()返回HashMap中键值对的数量

代码演示:
指定的键值对添加到HashMap中

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        scores.put("张三", 1);
        scores.put("李四", 2);
        scores.put("王五", 3);
        System.out.println(scores);
    }
}

运行结果:

在这里插入图片描述

检查HashMap中是否包含指定的键:

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        scores.put("张三", 1);
        scores.put("李四", 2);
        scores.put("王五", 3);
        System.out.println(scores);
        boolean containsKey = scores.containsKey("张三");
        System.out.println("Contains Charlie: " + containsKey);
    }
}

运行结果:

在这里插入图片描述

返回指定键对应的值:

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        scores.put("张三", 1);
        scores.put("李四", 2);
        scores.put("王五", 3);
        System.out.println(scores);
        int aliceScore = scores.get("李四");
        System.out.println( aliceScore);
    }
}

运行结果:

在这里插入图片描述

从HashMap中移除指定键的键值对:

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        scores.put("张三", 1);
        scores.put("李四", 2);
        scores.put("王五", 3);
        System.out.println(scores);
        scores.remove("张三");
        System.out.println(scores);
    }
}

运行结果:

在这里插入图片描述

三、Map循环遍历的五种方法

先使用Map方法定义数据

  Map map = new HashMap();
        map.put(0,"张三");
        map.put(1,"李四");
        map.put(2,"王五");

1.通过key的set集合进行遍历,然后通过key来取map的value

Set set = map.keySet();
        for (Object o : set) {
            System.out.println(o+" "+map.get(o));
        }

运行结果:
在这里插入图片描述

2.将key的set集合以迭代器的方式遍历出来,然后通过key来取map的value。

Set set = map.keySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()){
    Object next = iterator.next();
    System.out.println("key为:"+next+",value为:"+map.get(next));
}

运行结果:
在这里插入图片描述

3.将Map的键值对以迭代器的方式遍历出来,然后通过.getKey()与.getValue()方法取k、v的值。

Set<Map.Entry<Object, Object>> entries = map.entrySet();
        Iterator<Map.Entry<Object, Object>> iterator1 = entries.iterator();
        while (iterator1.hasNext()){
            Map.Entry<Object, Object> next = iterator1.next();
            System.out.println("key为:"+next.getKey()+",value为:"+next.getValue());
        }

运行结果:
在这里插入图片描述

4.此方法直接取出map的value并放在collection中,然后将v循环遍历

Collection<Object> values = map.values();
        for (Object value : values) {
            System.out.println("value为:"+value);
        }

运行结果:
在这里插入图片描述

5.取得所有键值对来通过foreach循环,遍历出所有k、v,理论上推荐这种方法,尤其是容量较大的时候。

Set<Map.Entry<Object, Object>> entries = map.entrySet();
        for (Map.Entry<Object, Object> entry : entries) {
            System.out.println("key为:"+entry.getKey()+",value为:"+entry.getValue());
        }

运行结果:
在这里插入图片描述

四、总结

1、Map接口定义了一些常用的方法,比如put(key, value)用于插入键值对、get(key)用于获取键对应的值、containsKey(key)用于判断是否包含指定的键等等。
2、Map中的键是唯一的,但值可以重复。如果插入一个已经存在的键,新的值将会覆盖旧的值。
3、Map还提供了一些其他的方法,比如keySet()用于获取所有的键的集合、values()用于获取所有的值的集合、entrySet()用于获取所有的键值对的集合等等。
4、Map是一个泛型接口,可以指定键和值的类型。

总之,Java中的Map提供了一种方便的方式来存储和获取键值对数据,它有多种实现方式,可以根据不同的需求选择适合的实现类。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值