【零基础学Java】—Map集合概述(四十三)

简介: 【零基础学Java】—Map集合概述(四十三)

一、Map集合概述

现实生活中,我们常会看到这样一种集合,IP地址与主机 名,身份证号与个人,系统用户名与系统对象等等,这种一一对应的关系,就叫做映射。java提供了专门的集合用来存放这种对象的关系,即java.util.Map接口。

我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,他们存储数据的形式不同,如下图所示:

🧨🧨🧨🧨🧨🧨总结

  • Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的存储方式。
  • Map中的集合,元素是成对存在的(理解为夫妻关系),每个元素由键与值两部分构成,通过键可以找到对应元素的值。
  • Collection中的集合称为单列集合,Map中的集合称为双列集合。
  • 需要注意的是,Map中的集合不能包含重复的键,值可以重复,每个键只能对应一个值。

二、Map常用子类

java.util.Map<k,v>集合 implements Map<k,v>接口

🧨🧨🧨🧨🧨HashMap集合的特点:

  • HashMap集合底层是哈希表,查询的速度特别的快
  • JDK1.8之前:数组+单向链表
  • JDK1.8之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度
  • hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
  • java.util.linkedHashMap<k,v>集合 extends HashMap<k,v> 集合

🧨🧨🧨🧨🧨linkedHashMap的特点:

  • linkedHashMap集合的底层是哈希表+链表
  • linkedHashMap集合是一个有序的集合,存储元素的取出元素的顺序都是一致的

三、Map接口中常用的方法

四、Entry键值对对象

作用:当Map集合一创建,那么就会在Map集合中创建一个Entry对象,用来记录键与值(键值对对象。键与值的映射关系)

Map集合遍历的第二种方式:使用Entry对象遍历

Map集合中的方法:

  • Set<Map,Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图

实现步骤:

  • 使用Map集合中的方法 entrySet(),把Map集和中的多个Entry对象取出来,存储到Set集合中
  • 遍历Set集合,获取每一个Entry对象
  • 使用Entry对象中的方法getKey()getValue()获取键与值
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
 * @author :CaiCai
 * @date : 2022/4/14 14:56
 */
/*
Map集合遍历的第二种方式:使用Entry对象遍历
Map集合中的方法:
Set<Map,Entry<K,V>> entrySet()   返回此映射中包含的映射关系的Set视图
实现步骤:
使用Map集合中的方法 entrySet(),把Map集和中的多个Entry对象取出来,存储到Set集合中
遍历Set集合,获取每一个Entry对象
使用Entry对象中的方法getKey()和getValue()获取键与值
 */
public class demoMap {
    public static void main(String[] args) {
        //创建Map集合对象
        Map<String,Integer> map=new HashMap<>();
        map.put("赵丽颖",168);
        map.put("张三",179);
        map.put("李四",170);
        //使用Map集合中的方法 entrySet(),把Map集和中的多个Entry对象取出来,存储到Set集合中
        Set<Map.Entry<String,Integer>> set=map.entrySet();
        //使用迭代器遍历Set集合
        Iterator<Map.Entry<String,Integer>> it= set.iterator();
        while(it.hasNext()){
            Map.Entry<String,Integer> entry=it.next();
            //使用entry对象中的方法getkey()和getValue()获取键值
            String key=entry.getKey();
            Integer value=entry.getValue();
            System.out.println(key+"-"+value);
        }
    }
}


相关文章
|
23天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
36 3
|
23天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
73 3
|
23天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
50 2
|
23天前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
76 2
|
4天前
|
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 开发者
|
13天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
17 1