Java之Map

一:Map定义

  • 在Java的集合框架中,Map接口是一种存储键值对(key-value pair)的数据结构。
  • Map不允许出现重复的键(key),但允许多个键映射到相同的值(value)。
  • Map接口并不继承自Collection接口,而是与Collection接口并行存在,用于处理键值对映射数据。
  • 常见的Map接口实现类有HashMap、LinkedHashMap、TreeMap等。

二:Map接口的实现类

  • HashMap
    • 基于哈希表实现,允许null键和null值。
    • 不保证映射的顺序,特别是它不保证该顺序恒久不变。
    • 性能通常优于Hashtable和TreeMap。
  • LinkedHashMap
    • 类似于HashMap,但遍历顺序是按照键值对插入到映射中的顺序(插入顺序)或最近最少使用(LRU)顺序。
    • 提供了按访问顺序(访问顺序)或插入顺序(插入顺序)遍历映射的方法。
  • TreeMap
    • 基于红黑树实现,能够按照键的自然顺序或自定义顺序进行排序。
    • 所有的元素都根据键的自然顺序(或创建TreeMap时提供的Comparator进行排序)。
    • 适用于需要有序遍历的场景。

三:Map接口的主要方法

  • V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。如果包含一个该键的映射关系,则旧值被替换。
  • V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。
  • V remove(Object key): 如果存在一个键的映射关系,则从此映射中移除它(可选操作)。
  • boolean containsKey(Object key): 如果此映射包含指定键的映射关系,则返回true。
  • boolean containsValue(Object value): 如果此映射将一个或多个键映射到指定值,则返回true。
  • int size(): 返回此映射中的键-值映射关系的数量。
  • boolean isEmpty(): 如果此映射不包含键-值映射关系,则返回true。
  • Set keySet(): 返回此映射中包含的键的Set视图。
  • Collection values(): 返回此映射中包含的值的Collection视图。
  • Set<Map.Entry<K,V>> entrySet(): 返回此映射中包含的映射关系的Set视图。

四:代码示例

package chapter8;

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

public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("apple",5);
        map.put("banana",3);
        map.put("orange",20);

        System.out.println("获取橘子的数量:"+ map.get("orange"));

        //遍历key值
        Set<String> set = map.keySet();
        System.out.println("set值为:" + set);
        for(String key: map.keySet()){
            System.out.println("key的值为:" + key);
        }

        //遍历value值
        Collection<Integer> collection= map.values();
        System.out.println("value的值为:" + collection );
        for(Integer value : collection){
            System.out.println("数量:" + value);
        }

        //遍历每一个Entry集合
        Set<Map.Entry<String ,Integer>> entries = map.entrySet();
        for(Map.Entry<String ,Integer> entry :entries){
            System.out.println("每一个entry集合为:" + entry);
        }

        //移除apple
        map.remove("apple");
        System.out.println("移除后的map为:" + map);
    }
}

/**
运行结果:
获取橘子的数量:20
set值为:[banana, orange, apple]
key的值为:banana
key的值为:orange
key的值为:apple
value的值为:[3, 20, 5]
数量:3
数量:20
数量:5
每一个entry集合为:banana=3
每一个entry集合为:orange=20
每一个entry集合为:apple=5
移除后的map为:{banana=3, orange=20}
*/
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值