【零基础学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);
        }
    }
}


相关文章
|
2月前
|
Java
【Java集合类面试二十八】、说一说TreeSet和HashSet的区别
HashSet基于哈希表实现,无序且可以有一个null元素;TreeSet基于红黑树实现,支持排序,不允许null元素。
|
21天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1天前
|
存储 算法 安全
深入理解Java中的集合框架
【9月更文挑战第34天】本文将带你走进Java的集合框架,探索其背后的设计哲学和实现细节。我们将从集合的基本概念出发,逐步深入到具体的接口和类的实现,最后通过一个实际的例子来展示如何在Java程序中高效地使用集合。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深度理解。
9 1
|
24天前
|
Java C# Swift
Java Stream中peek和map不为人知的秘密
本文通过一个Java Stream中的示例,探讨了`peek`方法在流式处理中的应用及其潜在问题。首先介绍了`peek`的基本定义与使用,并通过代码展示了其如何在流中对每个元素进行操作而不返回结果。接着讨论了`peek`作为中间操作的懒执行特性,强调了如果没有终端操作则不会执行的问题。文章指出,在某些情况下使用`peek`可能比`map`更简洁,但也需注意其懒执行带来的影响。
Java Stream中peek和map不为人知的秘密
|
9天前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
8天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
11天前
|
存储 安全 Java
Java 常用集合分类
Java 常用集合分类
13 2
|
26天前
|
安全 Java API
Java 18 概述:新特性一览
Java 18 作为 Java 平台的最新版本,引入了多项令人振奋的新特性和改进,包括模式匹配、记录类型、流库改进、外部函数与内存 API 以及并发处理增强。这些新功能不仅提升了开发者的生产力,还显著增强了 Java 的性能和安全性。本文将详细介绍 Java 18 的主要新特性,并通过代码示例帮助读者更好地理解和应用这些功能。
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
下一篇
无影云桌面