09_Map集合

深入探究贝叶斯网络(Bayesian Network):从基础原理到实际应用 贝叶斯网络,也称为信念网络或有向无环图模型,是一种概率图模型。它使用有向无环图(DAG)来表示随机变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络作为一种强大的工具,通过结合概率论和图论,为复杂系统建模和推理提供了有效手段。无论是在医学诊断、故障检测还是自然语言处理等领域,它都展示了巨大的潜力。然而,其计算复杂度高、结构学习困难等挑战也需要我们在实际应用中不断优化算法和技术。希望通过本文,你能对贝叶斯网络有更深入的理解,并能够在实际项目中灵活应用这一强大工具。 阅读详情

Map 集合

认识 Map 集合
  • Map 集合称为双列集合,格式 { key1 = value1, key2 = value2, key3 = value3e},它也被称为"键值对集合"

  • Map 集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能对应自己的值

Map 集合体系

特点:Map 系列集合的特点都是由键决定的,值只是一个附属品,值是不做要求的

  • HashMap:无序、不重复、无索引(用得最多)
  • LinkedHashMap:有序、不重复、无索引
  • TreeMap:按照大小默认升序排序,不重复,无索引
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class Test {
    public static void main(String[] args) {
//        Map<String, Integer> map = new HashMap<>();
        Map<String, Integer> map = new LinkedHashMap<>();  // 有序、不重复、无索引
        map.put("手表", 66);
        map.put("手表", 100);  // 后面重复的数据会覆盖前面的数据
        map.put("手机", 2);
        map.put("Java", 2);
        map.put(null, null);
        System.out.println(map);  // {手表=100, 手机=2, Java=2, null=null}

        Map<Integer, String> map1 = new TreeMap<>();  // 可排序、不重复、无索引
        map1.put(25, "Java");
        map1.put(31, "MySQL");
        map1.put(17, "Python");
        System.out.println(map1);  // {17=Python, 25=Java, 31=MySQL}
    }
}
Map 集合常用方法

Map 集合是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        // 1. 添加元素
        Map<String, Integer> map = new HashMap<>();
        map.put("手表", 66);
        map.put("手表", 100);
        map.put("手机", 2);
        map.put("Java", 2);
        map.put(null, null);
        System.out.println(map);
        // {手表=100, 手机=2, Java=2, null=null}

        // 2. 获取集合大小
        System.out.println(map.size());

        // 3. 清空集合
//      map.clear();

        // 4. 判断是否为空
        System.out.println(map.isEmpty());

        // 5. 根据键获取对应值
        System.out.println(map.get("手表"));  // 100

        // 6. 根据键删除整个元素(删除键会返回键的值)
        System.out.println(map.remove("手表"));  // 100

        // 7. 判断是否包含某个键
        System.out.println(map.containsKey("手表"));

        // 8. 判断是否包含某个值
        System.out.println(map.containsValue(2));

        // 9. 获取Map集合的全部键
        Set<String> keys = map.keySet();
        System.out.println(keys);  // [null, Java, 手机]

        // 10. 获取Map集合的全部值
        Collection<Integer> values = map.values();
        System.out.println(values);  // [null, 2, 2]

        // 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", 30);
        map2.put("java4", 40);
        map1.putAll(map2);  // 把map2集合中的元素全部导入到map1
        System.out.println(map2);  // {java4=40, java3=30}
        System.out.println(map1);  // {java4=40, java3=30, java2=20, java1=10}

    }
}
Map 集合的遍历
  • 方式一:键找值 ( 普通的方法 )
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        // 准备一个Map集合
        Map<String, Double> map = new HashMap<>();
        map.put("Jack", 168.5);
        map.put("Tony", 178.8);
        map.put("Peter", 158.9);
        map.put("Tomato", 180.7);
        System.out.println(map);
        // {Tony=178.8, Peter=158.9, Jack=168.5, Tomato=180.7}

        // 1. 获取Map集合的所有键
        Set<String> keys = map.keySet();
        System.out.println(keys);  // [Tony, Peter, Jack, Tomato]
        // 2. 遍历所有的键,根据键获取其对应的值
        for (String key : keys) {
            System.out.println(key + " <=====> " + map.get(key));
        }
        // 运行结果
//        Tony <=====> 178.8
//        Peter <=====> 158.9
//        Jack <=====> 168.5
//        Tomato <=====> 180.7
    }
}
  • 方式二:键值对 (把"键值对"看成一个整体进行遍历)
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        // 准备一个Map集合
        Map<String, Double> map = new HashMap<>();
        map.put("Jack", 168.5);
        map.put("Tony", 178.8);
        map.put("Peter", 158.9);
        map.put("Tomato", 180.7);
        System.out.println(map);
        // {Tony=178.8, Peter=158.9, Jack=168.5, Tomato=180.7}

        // 1. 获取Map集合提供的entrySet方法,把Map集合转成键值对类型的Set集合
        Set<Map.Entry<String, Double>> entries = map.entrySet();
//      entries 相当于是 =>  [(Tony=178.8), (Peter=158.9), (Jack=168.5), (Tomato=180.7)]
        for (Map.Entry<String, Double> entry : entries) {
            System.out.println((entry.getKey() + " <=====> " + entry.getValue()));
        }
        // 运行结果
//        Tony <=====> 178.8
//        Peter <=====> 158.9
//        Jack <=====> 168.5
//        Tomato <=====> 180.7
    }
}
  • 方式三:Lambda ( JDK 8 开始之后的新技术 )
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        // 准备一个Map集合
        Map<String, Double> map = new HashMap<>();
        map.put("Jack", 168.5);
        map.put("Tony", 178.8);
        map.put("Peter", 158.9);
        map.put("Tomato", 180.7);
        System.out.println(map);
        // {Tony=178.8, Peter=158.9, Jack=168.5, Tomato=180.7}

        // lambda 表达式
        map.forEach((k, v) -> {
            System.out.println(k + " <=====> " + v);
        });
        // 运行结果
//        Tony <=====> 178.8
//        Peter <=====> 158.9
//        Jack <=====> 168.5
//        Tomato <=====> 180.7
    }
}
HashMap

特点:无序、不重复、无索引(用得最多)

底层原理:HashMap 跟 HashSet 的底层原理是一模一样的,都是基于哈希表实现的;实际上,原来学的 Set 系列集合的底层就是基于 Map 实现的,只是 Set 集合中的元素只要键数据,不要值数据而已。

LinkedHashMap

特点:有序、不重复、无索引

底层原理:底层数据结构依然是基于哈希表实现的,只是每个元素值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序);实际上,原来学的 LinkedHashSet 集合的底层原理就是 LinkedHashMap 。

TreeMap

特点:按照大小默认升序排序,不重复,无索引

底层原理:TreeMap 跟TreeSet 集合的底层原理是一样的,都是基于红黑树实现排序。

// TreeMap 集合同样也支持指定比较规则

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class Test {
    public static void main(String[] args) {
        // 未简化模式
//        Map<Student, String> map = new TreeMap<>(new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                return Double.compare(o1.getScore(), o2.getScore());  // 升序
//            }
//        });

        // lambda 简化模式
        Map<Student, String> map = new TreeMap<>((o1, o2) -> Double.compare(o1.getScore(), o2.getScore());

        map.put(new Student("Jack", 66.5), "打篮球");
        map.put(new Student("Peter", 96.0), "敲代码");
        map.put(new Student("Tony", 86.5), "唱歌");
        System.out.println(map);
        // {Student{name='Jack', score=66.5}=打篮球, Student{name='Tony', score=86.5}=唱歌, Student{name='Peter', score=96.0}=敲代码}
    }
}

class Student {
    private String name;
    private double score;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

    public Student() {
    }

    public Student(String name, double score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

集合的嵌套(补充)

通过一个案例,快速理解与使用:

import java.util.*;

public class Test {
    public static void main(String[] args) {
        /**
         * 要求用集合实现:
         * 江苏省 = "南京市", "扬州市", "苏州市", "无锡市", "常州市"
         * 湖北省 = "武汉市", "孝感市", "十堰市", "宜昌市", "鄂州市"
         * 河北省 = "石家庄", "唐山市", "邢台市", "保定市", "张家口"
         */

        // 1. 创建外层集合
        Map<String, List<String>> map = new HashMap<>();

        // 2. 创建内层集合 + 内层集合填充数据
        List<String> lst1 = new ArrayList<>();
        Collections.addAll(lst1, "南京市", "扬州市", "苏州市", "无锡市", "常州市");

        // 3. 外层集合填充数据
        map.put("江苏省", lst1);

        // 其他部分
        List<String> lst2 = new ArrayList<>();
        Collections.addAll(lst2, "武汉市", "孝感市", "十堰市", "宜昌市", "鄂州市");
        map.put("湖北省", lst2);

        List<String> lst3 = new ArrayList<>();
        Collections.addAll(lst3, "石家庄", "唐山市", "邢台市", "保定市", "张家口");
        map.put("河北省", lst3);

        // 展示
        map.forEach((place, city) -> {
            System.out.println(place + ":" + city);
        });

        // 运行结果
//        江苏省:[南京市, 扬州市, 苏州市, 无锡市, 常州市]
//        湖北省:[武汉市, 孝感市, 十堰市, 宜昌市, 鄂州市]
//        河北省:[石家庄, 唐山市, 邢台市, 保定市, 张家口]
    }
}
大模型的安全发展与安全治理 2022 年底,OpenAI 推出的 ChatGPT 在文本生成领域实现了重大突破,引领了大模型技术的发展方向,推动了各式各样的基座大模型及行业大模型的发展,并逐步向多模态和具身化方向迅速演进。显然,大模型展现出的强大能力为人工智能通用化揭开了序幕。然而,大模型技术的安全性也面临着生成内容的安全性、伦理道德等重大挑战。只有积极确保大模型的安全性,才能更有效地推动其持续发展,进而更好地应对大模型技术变革所带来的机遇与挑战。 阅读详情

相关推荐

DMA学习笔记

DMA(direct memory access,直接内存访问),是一种避开CPU,可以直接对外设和内存进行访问的技术,可以实现外设与内存、内存之间、外设之间的数据的访问和搬移。

weixin_46220498的博客 3111

Java开发基础系列(十四):集合对象(Map)

Java开发基础系列(十四):集合对象(Map)

一恍过去 2万+

NFS服务器配置与autofs自动挂载

NFS服务器配置autofs自动挂载 环境: hostname ip OS server 192.168.220.138 centos7 client 192.168.220.139 centos7 一、NFS概述 NFS(Network File System)网络文件系统。最大功能就是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 二、端口 [root@se...

DoloresOOO的博客 1026

Java基础知识之Map

Java基础知识之Map的使用

qq_45344586的博客 1万+

昆仑通态,自由串口通讯

软件默认无该功能,需要问客服索要扩展包。

cfqq1989的博客 1536

MaxDEA如何计算超效率DEA

MaxDEA如何计算超效率DEA第一步,导入数据,设置输出和输出,点击OK;第二步,运行模型; 本文计算的是超效率DEA-BCC。 第一步,导入数据,设置输出和输出,点击OK; 第二步,运行模型; 在distance选项框中选择Radial:CCR(1978);BCC(1984)。 在Orientation中选择Non-oriented。其中,Input-oriented是投入最小;Outp...

王樰沫 1万+

java数据分组Map对象

现在我想做二级分组该怎么写呢?

m0_62387059的博客 524

ADS入门学习笔记——低噪声放大器(2)

1、输入匹配网络; 2、输出匹配网络;

weixin_42126696的博客 4990

Java中的Map

Java中Map的一些方法介绍

bigBbug的博客 2万+

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 418

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

丨汀、的博客 511

Java基础知识-Map

1、Map体系        2.各实现类说明及区别  3、哈希映射技术      哈希映射技术是一种就元素映射到数组的非常简单的技术。由于哈希映射采用的是数组结果,那么必然存在一中用于确定任意键访问数组的索引机制,该机制能够提供一个小于数组大小的整数,我们将该机制称之为哈希函数。在Java中我们不必为寻找这样的整数而大伤脑筋,因为每个对象都必定存在一个返回整数值的ha

wangshixu2015的博客 564

半车(前后、左右)、整车悬架详细推导建模和simulink仿真分析

用达朗贝尔定理依据悬架数学模型,得到悬架模型微分方程,分别用simulink建立前后半车、左右半车悬架;结合转向2自由度模型与半车侧倾模型,对模型考虑相干性、延时性的C级随机路面下,仿真分析给定角阶跃输入下的侧倾稳定性。

Mr.邹的博客 1万+

09-Map集合

一.概述 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collection中的集合称为单列集合,Map中的集合称为双列集合。 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。 二.Map常用子类 通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的Hash

Hunter_su的博客 141

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

进阶 09 Map集合

Map集合 java.util.Map<k,v>集合 Map集合的特点: 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) 2.Map集合中的元素,key和value的数据类型可以相同,也可以不同 3.Map集合中的元素,key是不允许重复的,value是可以重复的 4.Map集合中的元素,key和value是一一对应 HashMap集合 java.util.HashMap<k,v>集合 implements Map<k,v

菜鸟要成长的博客 323

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java 集合系列09之 Map架构

概要 前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。 首先,我们看看Map架构。 如上图: (01) Map 是映射接口,Map中存储的内容是键值对(key-value)。 (02) AbstractMap 是继承于Map的抽...

qq_43652793的博客 279

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

day09Map集合、异常

1、Collections工具类 Collections下的方法都是静态方法,直接用类名访问 批量添加元素Collections.addAll(操作的集合对象,批量添加的元素值); 打乱list集合顺序Collections.shuffle(操作集合的对象); 给list集合默认升序排列Collections.sort(操作集合的对象); 对于字符串是根据首位符号编号升序排列 对引用类型的数据排序需要用到比较器对象,定制排序规则 2、Map集合 概述 Map集合是一种双列模式,每个元素含

JayvenJavaUPUP 284

JavaEE学习记录day09集合03 Map集合、Stream流

JavaEE学习记录day09集合03 Map集合、Stream流 1.Map集合 1.1Map集合概述和特点【理解】 Map集合概述 interface Map<K,V> K:键的类型;V:值的类型 Map集合的特点 双列集合,一个键对应一个值 键不可以重复,值可以重复 Map集合的基本使用 public class MapDemo01 { public static void main(String[] args) { //创建集合对象

PTQ233的博客 551

09Java语法回顾map集合

Java语法回顾Map集合读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。Map集合的简介/* * Map:最大的优点就是体现对应关系。 * Map是一个键值对形式的集合。它的数据不再是单个的了,必须同时有键和值组成。 * * Map和Collection的区别? * Map:是(键值对

倾锋落颖花 839

09-Java集合-Map架构

概要 前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。 首先,我们看看Map架构。 如上图: (01) Map 是映射接口,Map中存储的内容是键值对(key-value)。 (02) AbstractMap 是继承于M...

pocher的博客 181

【转】Java 集合系列09之 Map架构

概要 前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。 首先,我们看看Map架构。 如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value)。(02) AbstractMap 是继...

adb96102的博客 93
上一篇: 08_Collection集合2
下一篇: 10_Stream
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值