我爱学Java之Map操作详解

本文深入探讨了Map数据结构的使用,包括基本操作、遍历方式及其性能考量。通过实例展示了如何高效地进行Map的查找、修改和迭代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先列举出Map的若干简单操作。

int size()
返回此映射中的键-值映射关系数

boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true

V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true

boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 trueboolean equals(Object o)
比较指定的对象与此映射是否相等(比较两个Map是否相等)

V put(K key, V value)
将指定的值与此映射中的指定键关联,如果这个Map之前包含这个键的映射,那么旧的映射值将被替换并返回,反之则返回null

void putAll(Map<? extends K, ? extends V> m) 
从指定映射中将所有映射关系复制到此映射中

V remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除并返回该映射值,如不存在则返回null

void clear()
从此映射中移除所有映射关系

下面重点说一下Map遍历的几种方式:

第一种:最常规的一种遍历方法,但不能直接获取到key值

public static void main(String[] args){

    Map<String,String> map = new HashMap<String,String>();

    map.put("name","sbw");
    map.put("birth","haerbin");
    map.put("work", "beijing");

    Collection<String> c = map.values();
    Iterator<String> i = c.iterator();
    while(i.hasNext()){
        System.out.println(i.next());
    }
}

第二种:利用keyset进行遍历,能够根据key值得到,并可根据key值获得value。

public static void main(String[] args){

        Map<String,String> map = new HashMap<String,String>();

        map.put("name","sbw");
        map.put("birth","haerbin");
        map.put("work", "beijing");

        Set<String> set = map.keySet();
        Iterator<String> i = set.iterator();

        while(i.hasNext()){
            System.out.println(i.next());//遍历出所有key
            System.out.println(map.get(i.next()));//根据key值获得value;
        }
    }

第三种:利用entrySet进行遍历,key值和value值可以同时获得

public static void main(String[] args){

        Map<String,String> map = new HashMap<String,String>();

        map.put("name","sbw");
        map.put("birth","haerbin");
        map.put("work", "beijing");

        //Map.Entry是Map声明的一个内部接口,它表示Map中的一个实体(一个key-value对)。
        Set<Map.Entry<String, String>> entry = map.entrySet();

        Iterator<Map.Entry<String,String>> i = entry.iterator();
        while(i.hasNext()){
            Map.Entry<String,String> e = i.next();
            System.out.println(e.getKey());//返回key值
            System.out.println(e.getValue());//返回value值
        }
    }

第四种:上述用到的Iterator都可以用foreach代替

具体的性能问题就不说了,需要根据实际需求衡量选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值