java map集合详解

时间:2024-10-12 11:12:44

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。 Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

工具/原料

电脑

intellij IDEA

第一步:java.util.Map知识概述

1、Interface Map<K,V>所有已知实现类:AbstractMap , Attributes , AuthProvider , ConcurrentHashMap , ConcurrentSkipListMap , EnumMap , HashMap , Hashtable , IdentityHashMap , LinkedHashMap , PrinterStateReasons , Properties , Provider , RenderingHints , SimpleBindings , TabularDataSupport , TreeMap , UIDefaults , WeakHashMap这些 Map 类可归为三种类型:1. 通用Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap2. 专用Map,通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults3.一个用于帮助我们实现自己的Map类的抽象类AbstractMap

2、常用方法:clear() 从该地图中删除所有的映射钱砀渝测(可选操作)。map.put("key1",媪青怍牙"value1"); 添加一个元素map.putAll(Map<? extends K,? extends V> m) 添加一个Map集合map.get("key1") 根据key获取valuemap.remove("key1"); 根据key移除一个元素boolean containsKey(Object key) 判断一个key在当前集合中是否存在boolean containsValue(Object value) 判断一个value在当前集合中是否存在boolean isEmpty() 如果此地图不包含键值映射,则返回 true 。也就是map没有内容返回trueint size() 返回该地图中键值映射的数量Set<K> keySet() 返回该地图中包含的键的集合视图Set<Map.Entry<K,V>> entrySet() 该地图中包含的映射的集合视图 。default V replace(K key,V value) 在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值),在指定的键不存在时,方法会return回来一个null。replace(k,v,v) 第二的新增的Map replace方法在替换现存值方面有更窄的释义范围。当那个方法(上一个replace方法)只是涵盖指定的键在映射中有任意一个有效的值的替换处理,而这个“replace”方法接受一个额外的(第三个)参数,只有在指定的键和值都匹配的情况下才会替换。

java map集合详解

3、常用方法的实际使用测试:1 代码如下所示import java.util.*;public class Test { public static void main(String[] args) { // 初始化,10W次赋值 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < 100000; i++) map.put(i, i); /** 增强for循环,keySet迭代 */ long start = System.currentTimeMillis(); for (Integer key : map.keySet()) { map.get(key); } long end = System.currentTimeMillis(); System.out.println("增强for循环,keySet迭代 -> " + (end - start) + " ms"); /** 增强for循环,entrySet迭代 */ start = System.currentTimeMillis(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { entry.getKey(); entry.getValue(); } end = System.currentTimeMillis(); System.out.println("增强for循环,entrySet迭代 -> " + (end - start) + " ms"); /** 迭代器,keySet迭代 */ start = System.currentTimeMillis(); Iterator<Integer> iterator = map.keySet().iterator(); Integer key; while (iterator.hasNext()) { key = iterator.next(); map.get(key); } end = System.currentTimeMillis(); System.out.println("迭代器,keySet迭代 -> " + (end - start) + " ms"); /** 迭代器,entrySet迭代 */ start = System.currentTimeMillis(); Iterator<Map.Entry<Integer, Integer>> iterator1 = map.entrySet() .iterator(); Map.Entry<Integer, Integer> entry; while (iterator1.hasNext()) { entry = iterator1.next(); entry.getKey(); entry.getValue(); } end = System.currentTimeMillis(); System.out.println("迭代器,entrySet迭代 -> " + (end - start) + " ms"); }}1、增强for循环使用方便,但性能较差,不适合处理超大量级的数据。2、迭代器的遍历速度要比增强for循环快很多,是增强for循环的2倍左右。3、使用entrySet遍历的速度要比keySet快很多,是keySet的1.5倍左右。

java map集合详解
java map集合详解
java map集合详解
java map集合详解

第二步:java.util.Map实现类

1、HashMap的基本原理

© 手抄报圈