2008 访问网站提示建设中,更改wordpress主题语言包,移动互联网应用软件开发,学做网站论坛视频下载前言#xff1a;在Java编程语言中#xff0c;集合框架#xff08;Collection Framework#xff09;提供了一系列用于存储和操作数据的接口和类。其中#xff0c;Map和Set是两个非常重要的接口#xff0c;分别用于存储键值对和无重复元素的集合。 ✨✨✨这里是秋刀鱼不做梦… 前言在Java编程语言中集合框架Collection Framework提供了一系列用于存储和操作数据的接口和类。其中Map和Set是两个非常重要的接口分别用于存储键值对和无重复元素的集合。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下本文大致的讲解内容 目录
1.Map概念简介 1Map的定义 2Map.Entry的说明, 3Map类在Java集合类中的关系
2.Map接口中常用API
3.Map的常见实现类 1HashMap 2LinkedHashMap 3TreeMap
4.Map的实际案例
5.总结 1.Map概念简介 1Map的定义 在开始学习如何使用Java中的Map类之前先让我们了解一下什么是Java中的Map类 ——Map类是Java集合框架中的一部分用于存储键值对key-value pairs。每个键key对应一个值value键是唯一的但值可以重复。常见的Map实现类包括HashMap、LinkedHashMap、TreeMap。 这里我们也附上官方文档中对Map的解释Map (Java Platform SE 8 ) 我相信读者如果初次学习Java中的Map类的话可能对上面对Java中Map类的解释不能很好的理解不过没有关系读者继续向下阅读即可。 2Map.EntryK, V的说明 对于Map这种数据结构而言其底层可以简单的理解为是由一个个节点进行构成的的树而Map.EntryK, V就是其每一个节点。 对于Map.EntryK, V来说其是Map内部实现的用来存放key, value键值对映射关系的内部类该内部类中主要提供了key, value的获取value的设置以及Key的比较方式
方法解释K getKey()返回 entry 中的 keyV getValue()返回 entry 中的 valueV setValue(V value)将键值对中的value替换为指定value 3Map类在Java集合类中的关系 了解了Map的定义与Map.EntryK, V之后在让我们看看Map在Java集合类中的关系如下图 从图中我们可以看出Map类不在实现Collection接口而是实现Map自身接口。 ——通关上边的学习了解之后这样我们就大致的了解了Java中的Map究竟是什么东西了。 2.Map接口中常用API Map接口提供了一些基本的方法用于操作键值对。以下是Map接口的主要方法
方法解释V get(Object key)返回 key 对应的 valueV getOrDefault(Object key, V defaultValue)返回 key 对应的 valuekey 不存在返回默认值V put(K key, V value)设置 key 对应的 valueV remove(Object key)删除 key 对应的映射关系SetK keySet()返回所有 key 的不重复集合CollectionV values()返回所有 value 的可重复集合SetMap.EntryK, V entrySet()返回所有的 key-value 映射关系boolean containsKey(Object key)判断是否包含 keyboolean containsValue(Object value)判断是否包含 value
这里我们对上述方法进行逐一使用代码进行解释
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Collection;public class MapMethodsExample {public static void main(String[] args) {// 创建一个 HashMap 实例MapString, Integer map new HashMap();// V put(K key, V value): 设置 key 对应的 valuemap.put(apple, 1);map.put(banana, 2);map.put(orange, 3);// V get(Object key): 返回 key 对应的 valueInteger appleValue map.get(apple);System.out.println(Value for apple: appleValue);// V getOrDefault(Object key, V defaultValue): 返回 key 对应的 valuekey 不存在返回默认值Integer mangoValue map.getOrDefault(mango, 0);System.out.println(Value for mango: mangoValue);// V remove(Object key): 删除 key 对应的映射关系Integer removedValue map.remove(banana);System.out.println(Removed value for banana: removedValue);System.out.println(Map after removing banana: map);// SetK keySet(): 返回所有 key 的不重复集合SetString keys map.keySet();System.out.println(Keys: keys);// CollectionV values(): 返回所有 value 的可重复集合CollectionInteger values map.values();System.out.println(Values: values);// SetMap.EntryK, V entrySet(): 返回所有的 key-value 映射关系SetMap.EntryString, Integer entries map.entrySet();System.out.println(Entries: entries);// boolean containsKey(Object key): 判断是否包含 keyboolean containsApple map.containsKey(apple);System.out.println(Contains key apple: containsApple);// boolean containsValue(Object value): 判断是否包含 valueboolean containsValue2 map.containsValue(2);System.out.println(Contains value 2: containsValue2);}
}这样我们就大致的了解了Java中有关Map的API了 3.Map的常见实现类 在Java汇总常见的Map实现类包括HashMap、LinkedHashMap、TreeMap。 1HashMap HashMap是最常用的Map实现类基于哈希表实现。它允许使用null键和null值但不保证映射的顺序。其主要特点包括 线程不安全多个线程同时访问时需要手动同步。无序不保证键值对的插入顺序。高效大多数操作的时间复杂度为O(1)。 以下为其代码演示
import java.util.HashMap;
import java.util.Map;public class HashMapExample {public static void main(String[] args) {MapString, Integer hashMap new HashMap();// 添加键值对hashMap.put(Apple, 10);hashMap.put(Banana, 20);hashMap.put(Orange, 30);hashMap.put(Apple, 40); // 重复键将覆盖之前的值// 获取值int value hashMap.get(Apple);System.out.println(Value for Apple: value);// 判断是否包含键boolean containsKey hashMap.containsKey(Banana);System.out.println(Contains key Banana: containsKey);// 判断是否包含值boolean containsValue hashMap.containsValue(20);System.out.println(Contains value 20: containsValue);// 遍历键值对for (Map.EntryString, Integer entry : hashMap.entrySet()) {System.out.println(entry.getKey() : entry.getValue());}// 删除键值对hashMap.remove(Orange);// 清空映射hashMap.clear();// 判断是否为空boolean isEmpty hashMap.isEmpty();System.out.println(Is empty: isEmpty);}
}2LinkedHashMap LinkedHashMap继承自HashMap并且在内部使用双向链表维护键值对的插入顺序。因此LinkedHashMap是有序的Map实现类。其主要特点包括 维护插入顺序或访问顺序。其他特性与HashMap相同。 以下为其代码演示
import java.util.LinkedHashMap;
import java.util.Map;public class LinkedHashMapExample {public static void main(String[] args) {MapString, Integer linkedHashMap new LinkedHashMap();// 添加键值对linkedHashMap.put(Apple, 10);linkedHashMap.put(Banana, 20);linkedHashMap.put(Orange, 30);linkedHashMap.put(Apple, 40); // 重复键将覆盖之前的值// 遍历键值对for (Map.EntryString, Integer entry : linkedHashMap.entrySet()) {System.out.println(entry.getKey() : entry.getValue());}}
}3TreeMap TreeMap是基于红黑树实现的有序Map它的键按照自然顺序或自定义比较器的顺序排序。其主要特点包括 保证键的排序顺序。其他特性与HashMap相似但TreeMap的操作时间复杂度为O(log n)。 以下为其代码演示
import java.util.Map;
import java.util.TreeMap;public class TreeMapExample {public static void main(String[] args) {MapString, Integer treeMap new TreeMap();// 添加键值对treeMap.put(Apple, 10);treeMap.put(Banana, 20);treeMap.put(Orange, 30);treeMap.put(Apple, 40); // 重复键将覆盖之前的值// 遍历键值对for (Map.EntryString, Integer entry : treeMap.entrySet()) {System.out.println(entry.getKey() : entry.getValue());}}
}这样我们就大致的了解了Map中常见实现类了 4.Map的实际案例 在学习完了Map概念简介、Map接口中常用API与Map的常见实现类之后现在让我们看一下使用Map的实际案例来进一步加深对Java中Map类的理解 以下示例展示了如何使用Map统计一段文本中每个单词出现的频率
import java.util.HashMap;
import java.util.Map;public class WordFrequency {public static void main(String[] args) {String text This is a sample text. This text is for demonstration purposes.;// 统计单词频率MapString, Integer wordCount new HashMap();String[] words text.split(\\s);for (String word : words) {word word.toLowerCase().replaceAll([^a-zA-Z], );if (!word.isEmpty()) {wordCount.put(word, wordCount.getOrDefault(word, 0) 1);}}// 打印结果for (Map.EntryString, Integer entry : wordCount.entrySet()) {System.out.println(entry.getKey() : entry.getValue());}}
}——这样我们即完成了对一段文本中每个单词出现的次数的统计。 5.总结 Map接口及其实现类在Java编程中扮演着重要角色。通过本文的介绍相信读者能更好地理解Map的概念、常用方法及其在实际应用中的使用。HashMap提供了高效但无序的存储LinkedHashMap维护插入顺序TreeMap提供了有序存储。 选择合适的Map实现类取决于具体需求例如是否需要保证键的顺序或是否需要线程安全。 以上就是本篇文章的全部内容了