Java——集合中的Map接口通过HashMap类实现一些常用的方法

简介: Java——集合中的Map接口通过HashMap类实现一些常用的方法

任何复杂的知识往往给人的感觉都是那么的不友好,所以,一定要静下心来,耐心去看、去读、去理解这些东西!!!  


1.Map接口简介


说明:Map接口是一种双列集合,它的每个元素都包含一个键对象 Key 和值对象 Value,键和值对象之间存在一种对应关系,称为映射。 那什么是映射呢?在生活中,我们常常会看到这样的一种集合:账号——密码、IP地址——主机名、系统用户名——系统用户对象等。像这种一一对应的关系,就叫做映射。


特点:①Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)。


          ②Map集合中的元素,key 和 value 的数据类型可以相同,也可以不同。


          ③Map集合中的元素,key 是不允许重复的, value 是可以重复的。


          ④Map集合中的元素,key 和 value是一一对应的。



2.HashMap类简介


说明:HashMap 是 Map 接口的一个实现类,它用于存储键值映射关系,该集合的键和值允许为空,但键不能重复,且集合中的元素是无序的。


特点:HashMap 底层是由哈希表结构组成的,其实就是“数组+链表”的组合体,数组是 HashMap 的主体结构,链表则主要是为了解决哈希值冲突而存在的分支结构。正因为这样特殊的存储结构,HashMap 集合对于元素的增、删、改、查操作表现出的效率都比较高。


2.1 内部结构  



2.2 存储原理


 

3.Map接口常用的方法



4.应用举例

import java.util.*;
/*import java.util.Map;
  import java.util.HashMap;
  import java.util.Collection;
  import java.util.Set;
  import java.util.Iterator;*/
public class MapDemo {
  public static void main(String[] args) {
    //用多态的形式,创建一个hashmap集合,集合长度为16
    Map<String,String> hashmap=new HashMap<String,String>(16);
    System.out.println("↓↓↓Map集合常用方法如下↓↓↓");
    System.out.println("---------------------------------------------");
    System.out.println("创建第一个空的hashmap集合,键、值类型均为String类:" + hashmap);
    System.out.println("---------------------------------------------");
    hashmap.put("公共的","public");
    hashmap.put("受保护的","protected");
    hashmap.put("默认的","friendly");
    hashmap.put("默认的","default");//覆盖这个键之前对应的值
    hashmap.put("私有的","private");
    System.out.println("向hashmap集合中添加键值对元素:" + hashmap);
    System.out.println("此时hashmap集合中键值对的个数为:" + hashmap.size());
    System.out.println("---------------------------------------------");
    System.out.println("获取hashmap集合中键\"公共的\"所映射的值:" + hashmap.get("公共的"));
    System.out.println("---------------------------------------------");
    System.out.println("查看hashmap集合中是否存在键对象\"私有的\":" + hashmap.containsKey("私有的"));
    System.out.println("查看hashmap集合中是否存在值对象\"protected\":" + hashmap.containsValue("protected"));
    System.out.println("---------------------------------------------");
    String str1=hashmap.remove("默认的");
    System.out.println("将指定的键所对应的键值对元素移除,并返回该元素的值:" + str1);
    System.out.println("移除之后,hashmap集合为:" + hashmap);
    System.out.println("---------------------------------------------");
    Set<String> set=hashmap.keySet();
    System.out.println("以Set集合的形式返回hashmap集合中所有的键对象:" + set);
    System.out.println("---------------------------------------------");
    Collection<String> collection=hashmap.values();
    System.out.println("以Collection集合的形式返回hashmap集合中所有的值对象:" + collection);
    System.out.println("---------------------------------------------");
    Set<Map.Entry<String,String>> setmap=hashmap.entrySet();
    System.out.println("将hashmap集合转换为存储元素类型为Map的Set集合:" + setmap);
    System.out.println("---------------------------------------------");
    System.out.println("Iterator迭代器遍历Map集合——keySet()方法:");
    Set<String> setkey1=hashmap.keySet();//以Set集合的形式返回hashmap集合中所有的键对象
    Iterator<String> iterator1=setkey1.iterator();//获取Set集合的迭代器对象,并遍历该迭代器对象
    while(iterator1.hasNext()) {
      Object key1=iterator1.next();//获取键
      Object value1=hashmap.get(key1);//通过键获取相应的值
      System.out.println("键:" + key1 + ",值:" + value1);
    }
    System.out.println("---------------------------------------------");
    System.out.println("Iterator迭代器遍历Map集合——entrySet()方法:");
    Set<Map.Entry<String,String>> setkey2=hashmap.entrySet();//将hashmap集合转换为存储元素类型为Map的Set集合
    Iterator<Map.Entry<String,String>> iterator2=setkey2.iterator();//获取Set集合的迭代器对象,并遍历该迭代器对象
    while(iterator2.hasNext()) {
      //通过Entry对象的getKey()和getValue()方法,获取键和值
      Map.Entry<String,String> kv=iterator2.next();
      Object key2=kv.getKey();
      Object value2=kv.getValue();
      System.out.println("键:" + key2 + ",值:" + value2);
    }
    System.out.println("---------------------------------------------");
    System.out.println("使用Lambda表达式的书写形式来遍历Map集合:");
    //JDK 8新方法遍历Map集合(Lambda表达式特性),这里也可以使用for-each循环对hashmap集合进行遍历
    hashmap.forEach((key,value)->System.out.println("键:" + key + ",值:" + value));
    System.out.println("---------------------------------------------");
    hashmap.clear();
    System.out.println("清空hashmap集合中的所有键值对元素:" + hashmap);
    System.out.println("---------------------------------------------");
  }
}


相关文章
|
8天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
29 5
|
21天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
31 4
|
1月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
30 2
|
1月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
1月前
|
Java 开发者
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
65 5
|
1月前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
32 0
|
1月前
|
Java API Apache
java集合的组内平均值怎么计算
通过本文的介绍,我们了解了在Java中计算集合的组内平均值的几种方法。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。无论是使用传统的循环方法,还是利用Java 8的Stream API,亦或是使用第三方库(如Apache Commons Collections和Guava),都可以有效地计算集合的组内平均值。希望本文对您理解和实现Java中的集合平均值计算有所帮助。
37 0
下一篇
DataWorks