Java中Map集合概述特点、基本功能、获取功能及Map集合的两种遍历方式

简介: Map集合概述特点、基本功能、获取功能及Map集合的两种遍历方式的简单示例

 一、Map集合概述和特点

Map集合概述:

interface Map<K,V> K:键的类型;V:值的类型

image.gif

Map集合的特点:

◆ 键值对映射关系

◆ 一个键对应一个值

◆ 键不能重复,值可以重复

◆ 元素存储无序

Map集合的基本使用:

public class MapDemo01 { 
    public static void main(String[] args) { 
        //创建集合对象 
        Map<String,String> map = new HashMap<String,String>(); 
        //V put(K key, V value) 将指定的值与该映射中的指定键相关联 
        map.put("itheima001","小林"); 
        map.put("itheima002","小张"); 
        map.put("itheima003","小王"); 
        map.put("itheima003","小刘"); 
        //输出集合对象 
        System.out.println(map); 
    } 
}

image.gif

二、Map集合的基本功能

方法介绍:

方法名 说明
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containKey(Object key) 判断集合是否包含指定的键
boolean containValue(Oject value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

示例代码:

public class MapDemo02 { 
    public static void main(String[] args) { 
        //创建集合对象 
        Map<String,String> map = new HashMap<String,String>(); 
        //V put(K key,V value):添加元素 
        map.put("张无忌","赵敏"); 
        map.put("郭靖","黄蓉"); 
        map.put("杨过","小龙女"); 
        //V remove(Object key):根据键删除键值对元素 
        System.out.println(map.remove("郭靖")); 
        System.out.println(map.remove("郭襄")); 
        //void clear():移除所有的键值对元素 
        map.clear(); 
        //boolean containsKey(Object key):判断集合是否包含指定的键 
        System.out.println(map.containsKey("郭靖")); 
        System.out.println(map.containsKey("郭襄")); 
        //boolean isEmpty():判断集合是否为空 
        System.out.println(map.isEmpty()); 
        //int size():集合的长度,也就是集合中键值对的个数 
        System.out.println(map.size()); 
        //输出集合对象 
        System.out.println(map); 
    } 
}

image.gif

三、Map集合的获取功能

方法介绍:

方法名 说明
V get(Object key) 根据键获取值
Set keySet() 获取所有键的集合
Collection values() 获取所有值的集合
Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象的集合

示例代码:

public class MapDemo03 { 
    public static void main(String[] args) { 
        //创建集合对象 
        Map<String, String> map = new HashMap<String, String>(); 
        //添加元素 
        map.put("张无忌", "赵敏"); 
        map.put("郭靖", "黄蓉"); 
        map.put("杨过", "小龙女"); 
        //V get(Object key):根据键获取值 
        System.out.println(map.get("张无忌")); 
        System.out.println(map.get("张三丰")); 
        //Set<K> keySet():获取所有键的集合 
        Set<String> keySet = map.keySet(); 
        for(String key : keySet) { 
             System.out.println(key); 
        } 
        //Collection<V> values():获取所有值的集合 
        Collection<String> values = map.values(); 
        for(String value : values) { 
            System.out.println(value); 
        } 
    } 
}

image.gif

四、Map集合的两种遍历方式

方式一:

遍历思路

map集合存储的元素是成对出现的,map集合键值对为一个集合

把所有的键集中起来

遍历键的集合,获取每一个键

根据键去找到对应的值

步骤分析:

● 获取所有的键的集合,用keySet()方法实现

● 遍历键的集合,获取到每一个键,用增强for实现

● 根据键去找值,用get(Object key)方法实现

代码实现:

public class MapDemo01 { 
    public static void main(String[] args) { 
        //创建集合对象 
        Map<String, String> map = new HashMap<String, String>(); 
        //添加元素 
        map.put("张无忌", "赵敏"); 
        map.put("郭靖", "黄蓉"); 
        map.put("杨过", "小龙女"); 
        //获取所有键的集合。用keySet()方法实现 
        Set<String> keySet = map.keySet(); 
        //遍历键的集合,获取到每一个键。用增强for实现 
        for (String key : keySet) { 
            //根据键去找值。用get(Object key)方法实现 
            String value = map.get(key); 
            System.out.println(key + "," + value); 
        } 
    } 
}

image.gif

方式二:

遍历思路

存储的元素是成对出现的,所有可以把map看成一个键值对的集合

获取所有的键值对集合

遍历键值对的集合,得到每一个键值对

根据键值对获取键和值

步骤分析:

获取所有键值对对象的集合

Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合

遍历键值对对象的集合,得到每一个键值对对象

■ 用增强for实现,得到每一个Map.Entry

根据键值对对象获取键和值

■ 用getKey()得到键

■ 用getValue()得到值

代码实现:

public class MapDemo02 { 
    public static void main(String[] args) { 
        //创建集合对象 
        Map<String, String> map = new HashMap<String, String>(); 
        //添加元素
        map.put("张无忌", "赵敏"); 
        map.put("郭靖", "黄蓉"); 
        map.put("杨过", "小龙女"); 
        //获取所有键值对对象的集合 
        Set<Map.Entry<String, String>> entrySet = map.entrySet(); 
        //遍历键值对对象的集合,得到每一个键值对对象 
        for (Map.Entry<String, String> me : entrySet) { 
            //根据键值对对象获取键和值 
            String key = me.getKey(); 
            String value = me.getValue(); 
            System.out.println(key + "," + value); 
        } 
    } 
}

image.gif

目录
相关文章
|
25天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
36 6
|
25天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
34 3
|
25天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
31 2
|
5天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
11 2
|
4天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
9天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
9天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
9天前
|
Java 开发者
|
21天前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
48 5
|
20天前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
16 3