集合进阶(Map集合):

一、Map集合

1.1 Map概述体系

所有的Map集合有如下的特点:所有键是不允许重复的,值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。

写一个Map集合,保存几个键值对,体验一下Map集合的特点

复制代码
public class MapTest1 {
    public static void main(String[] args) {
        // Map<String, Integer> map = new HashMap<>(); // 一行经典代码。按照键: 无序,不重复,无索引。
        Map<String, Integer> map = new LinkedHashMap<>(); // 特点: 有序,不重复,无索引。
        map.put("手表", 100);
        map.put("手表", 220); // 后面重复的数据会覆盖前面的数据(键)
        map.put("手机", 2);
        map.put("Java", 2);
        map.put(null, null);
        System.out.println(map);
​
        Map<Integer, String> map1 = new TreeMap<>(); // 可排序,不重复,无索引
        map1.put(23, "Java");
        map1.put(23, "MySQL");
        map1.put(19, "李四");
        map1.put(20, "王五");
        System.out.println(map1);
    }
}

总结:

  1. Map集合是什么?什么时候可以考虑使用Map集合?

Map集合是键值对集合

需要存储一一对应的数据时,就可以考虑使用Map集合来做

  1. Map集合的实现类有哪些?各自的特点是?

HashMap: 元素按照键是无序,不重复,无索引,值不做要求。

LinkedHashMap: 元素按照键是有序,不重复,无索引,值不做要求。

TreeMap:元素按照建是排序,不重复,无索引的,值不做要求。

1.2 Map集合的常用方法

public class MapTest2 {

public static void main(String\[\] args) {

// 1.添加元素: 无序,不重复,无索引。

Map<String, Integer> map = new HashMap<>();

map.put("手表", 100);

map.put("手表", 220);

map.put("手机", 2);

map.put("Java", 2);

map.put(null, null);

System.out.println(map);

// map = {null=null, 手表=220, Java=2, 手机=2}

// 2.public int size():获取集合的大小

System.out.println(map.size());

// 3、public void clear():清空集合

//map.clear();

//System.out.println(map);

// 4.public boolean isEmpty(): 判断集合是否为空,为空返回true ,反之!

System.out.println(map.isEmpty());

// 5.public V get(Object key):根据键获取对应值

int v1 = map.get("手表");

System.out.println(v1);

System.out.println(map.get("手机")); // 2

System.out.println(map.get("张三")); // null

// 6. public V remove(Object key):根据键删除整个元素(删除键会返回键的值)

System.out.println(map.remove("手表"));

System.out.println(map);

// 7.public boolean containsKey(Object key): 判断是否包含某个键 ,包含返回true ,反之

System.out.println(map.containsKey("手表")); // false

System.out.println(map.containsKey("手机")); // true

System.out.println(map.containsKey("java")); // false

System.out.println(map.containsKey("Java")); // true

// 8.public boolean containsValue(Object value): 判断是否包含某个值。

System.out.println(map.containsValue(2)); // true

System.out.println(map.containsValue("2")); // false

// 9.public Set<K> keySet(): 获取Map集合的全部键。

Set<String> keys = map.keySet();

System.out.println(keys);

// 10.public Collection<V> values(); 获取Map集合的全部值。

Collection<Integer> values = map.values();

System.out.println(values);

// 11.把其他Map集合的数据倒入到自己集合中来。(拓展)

Map<String, Integer> map1 = new HashMap<>();

map1.put("java1", 10);

map1.put("java2", 20);

Map<String, Integer> map2 = new HashMap<>();

map2.put("java3", 10);

map2.put("java2", 222);

map1.putAll(map2); // putAll:把map2集合中的元素全部倒入一份到map1集合中去。

System.out.println(map1);

System.out.println(map2);

}

}

相关推荐
落魄大学生之流水线上谋生计3 分钟前
LangGraph 基本用法指南
java·windows·python·langchain
2601_9621284116 分钟前
SpringBoot篇(缓存层)
java·spring boot·缓存
Dovis(誓平步青云)29 分钟前
折叠屏悬停看视频,上半屏和下半屏应该各做什么
android·java·服务器·开发语言·安全·音视频
2501_9378609443 分钟前
Java多线程初阶(下)—— synchronized、volatile、wait/notify与经典并发工具
java·开发语言·jvm
牛油果子哥q1 小时前
C++内存池与对象池精讲:内存碎片、自定义分配器、对象池实现、STL allocator原理、工程落地与性能对比
java·开发语言·c++
CodeStats1 小时前
《源纹天书》第三百六十三章至第三百六十四章
java·开发语言·源纹天书
万法若空1 小时前
C/C++ 类型别名定义方式对比
java·c语言·c++
吴声子夜歌2 小时前
Java——开发中通用的方法和准则(一)
java·开发语言
mmsy10242 小时前
缓存知识点总结
java·spring·缓存
运行时异常2 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端