赞
踩
博主打算从0-1讲解下java基础教学,今天教学第十篇:Java中Map详解说明。
在 Java 编程中,Map 接口代表了一种键值对的集合,每个键对应一个值。Map 接口提供了一系列操作方法,可以方便地对键值对进行增删改查等操作。本文将介绍 Map 接口的基本概念以及如何在 Java 中使用 Map 接口。
目录
四、 HashMap,TreeMap,LinkedHashMap区别
Map 接口是 Java Collections Framework 中的一部分,位于 java.util
包中。它是一个接口,代表了一种键值对的集合,每个键对应一个值。Map 接口允许键值对具有唯一性,即同一个键只能对应一个值。
Map 接口的主要特点包括:
Java 中常见的 Map 接口的实现类包括:
在本文中,我们将主要介绍 HashMap 的使用。
下面是一个使用 Map 接口的 HashMap 实现的示例代码:
- import java.util.HashMap;
- import java.util.Map;
-
- public class Main {
- public static void main(String[] args) {
- // 创建一个 HashMap 对象
- Map<String, Integer> myMap = new HashMap<>();
-
- // 添加键值对到集合
- myMap.put("Apple", 10);
- myMap.put("Banana", 20);
- myMap.put("Orange", 30);
-
- // 获取集合大小
- int size = myMap.size();
- System.out.println("Map size: " + size);
-
- // 访问集合中的值
- System.out.println("Value for key 'Apple': " + myMap.get("Apple"));
- System.out.println("Value for key 'Banana': " + myMap.get("Banana"));
-
- // 遍历集合并打印每个键值对
- System.out.println("All key-value pairs:");
- for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
- System.out.println(entry.getKey() + " -> " + entry.getValue());
- }
-
- // 检查集合中是否包含某个键
- boolean containsKey = myMap.containsKey("Banana");
- System.out.println("Does map contain key 'Banana'? " + containsKey);
-
- // 删除集合中的某个键值对
- myMap.remove("Banana");
- System.out.println("After removing key 'Banana':");
- System.out.println(myMap);
-
- // 清空集合
- myMap.clear();
- System.out.println("After clearing the map:");
- System.out.println(myMap);
- }
- }
下面是一个示例,展示了对 HashMap、TreeMap 和 LinkedHashMap 进行添加元素后的输出排序情况:
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.TreeMap;
-
- public class Main {
- public static void main(String[] args) {
- // HashMap 示例
- Map<String, Integer> hashMap = new HashMap<>();
- hashMap.put("Banana", 2);
- hashMap.put("Apple", 1);
- hashMap.put("Orange", 3);
- hashMap.put("Cool", 5);
- hashMap.put("Door", 4);
- System.out.println("HashMap:");
- System.out.println(hashMap);
-
- // TreeMap 示例
- Map<String, Integer> treeMap = new TreeMap<>();
- treeMap.put("Banana", 2);
- treeMap.put("Apple", 1);
- treeMap.put("Orange", 3);
- treeMap.put("Cool", 5);
- treeMap.put("Door", 4);
- System.out.println("TreeMap:");
- System.out.println(treeMap);
-
- // LinkedHashMap 示例
- Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
- linkedHashMap.put("Banana", 2);
- linkedHashMap.put("Apple", 1);
- linkedHashMap.put("Orange", 3);
- linkedHashMap.put("Cool", 5);
- linkedHashMap.put("Door", 4);
- System.out.println("LinkedHashMap:");
- System.out.println(linkedHashMap);
- }
- }
很明显:
这里要注意一下,当你多次运行程序时,你会发现hashmap的输出趋向于有序?
这里解答下:
虽然 HashMap 不保证元素的顺序,但是在实际使用中,对于相同的哈希表大小和相同的哈希函数,相同的元素插入顺序往往会导致相同的哈希码分布,从而使得元素在哈希表中的位置趋于相同,进而使得元素的遍历顺序看起来是有序的。这种现象称为“桶中的元素顺序”。
但是,这种“有序性”仅仅是一种“看起来”的现象,实际上 HashMap 并不保证元素的顺序,因此不应该依赖于遍历结果的顺序。如果需要有序的遍历,应该使用 TreeMap 或者 LinkedHashMap,它们会根据键的自然顺序或者插入顺序进行有序遍历。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。