java Map学习

Map

在Java中,Map 是一个接口,表示一个对象的集合,其中每个元素包含一个 键 (key) 和一个 值 (value)。Map 允许通过键来访问对应的值。在 Map 中,键是唯一的,而值可以是重复的。

1.Map接口

Map 是 Java 集合框架中的一个接口,定义了一些方法来处理键值对。常见的实现类有 HashMap、TreeMap 和 LinkedHashMap。

Map 接口常用方法:

put(K key, V value):将指定的键值对插入到映射中。
get(Object key):返回与指定键对应的值。如果没有找到该键,返回 null。
remove(Object key):移除指定键的键值对。
containsKey(Object key):检查是否存在指定的键。
containsValue(Object value):检查是否存在指定的值。
size():返回映射中的键值对数量。
keySet():返回所有键的 Set 集合。
values():返回所有值的 Collection 集合。
entrySet():返回所有键值对的 Set 集合。

2、Map常见实现类

HashMap:最常用的 Map 实现,基于哈希表实现,允许键为 null,不保证顺序。
TreeMap:基于红黑树实现,按键的自然顺序或构造时提供的 Comparator 排序。
LinkedHashMap:继承自 HashMap,但它维护了一个由插入顺序或访问顺序所决定的链表顺序。

3、HashMap示例

HashMap 是一个最常见的 Map 实现类。它允许 null 键和值,并且无序。

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

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();

        // 插入键值对
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);

        // 获取值
        System.out.println("Alice's age: " + map.get("Alice"));  // 输出 25

        // 检查是否包含某个键
        System.out.println("Contains Bob? " + map.containsKey("Bob"));  // 输出 true

        // 移除元素
        map.remove("Charlie");

        // 获取所有键
        System.out.println("Keys: " + map.keySet());  // 输出 [Alice, Bob]

        // 获取所有值
        System.out.println("Values: " + map.values());  // 输出 [25, 30]
        
        // 遍历 Map
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

4、TreeMap示例

TreeMap 按照键的自然顺序(或提供的 Comparator)对元素进行排序。

import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new TreeMap<>();

        // 插入键值对
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);

        // 按键的自然顺序排序
        System.out.println("Sorted Keys: " + map.keySet());  // 输出 [Alice, Bob, Charlie]
        
        // 遍历 Map
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

5、LinkedHashMap示例

LinkedHashMap 保持元素的插入顺序。它的性能略低于 HashMap,但可以保持顺序。

import java.util.Map;
import java.util.LinkedHashMap;

public class LinkedHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new LinkedHashMap<>();

        // 插入键值对
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);

        // 按照插入顺序遍历
        System.out.println("LinkedHashMap keys (insertion order): " + map.keySet());

        // 遍历 Map
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值