javase-collection-210623-01

从‘眼花缭乱’到‘心中有数’:rs-fMRI统计分析全流程避坑指南(附DPABI操作截图) 本文详细解析了rs-fMRI统计分析的全流程,从质量控制到统计模型选择,再到多重比较校正和结果解读。特别针对DPABI软件操作中的常见陷阱提供实用指南,帮助研究者避免FDR和GRF校正等关键环节的错误,实现从数据混乱到清晰分析的转变。 阅读详情

javase-collection-HashMap-210623-01

  • HashMap

HashMapTest01.java

package bgy_hashmap01;
/*
    1. HashMap底层用的是 哈希表/散列表 的数据结构
        1)哈希表是一个数组和单向链表的结合体
        2)它是一个一维数组,数组中每一个元素是一个单向链表
        3)数组:查询效率高,随机增删效率低
        4)单向链表:随机增删效率高,查询效率低

        1) 非线程安全
        2) JDK8之后,如果哈希表单向链表中元素超过8个,
           单向链表这种数据结构会变成红黑树数据结构,
           当红黑树的节点数量小于6时,会重新把红黑树变成单向链表,
           这种方法是为了提高检索效率,二叉树的检索会再次缩小范围,提高效率。

    2. HashMap 底层源码
        public class HashMap {

            // HashMap底层实际上就是一个数组(一维数组)
            transient Node<K,V>[] table;

            static class Node<K,V> implements Map.Entry<K,V> {
                // 哈希值
                // 哈希值是key的hashCode()方法的执行结果
                // 哈希值通过哈希函数(算法),可以转换为存储成数组的下标
                final int hash;
                final K key;        // 存储到Map集合中的key
                V value;            // 存储Map集合中的value
                Node<K,V> next;     // 下一个节点的内存地址
                ......
                ......
            }
       }

   3. 方法及原理
        map.put(k,v);
        map.get(k);

   4. HashMap特点:
        无序,不可重复
        因为不一定存储到哪一个单向链表上,所以无序
        equals方法来保证HashMap集合中key不可重复,
        如果key重复,value会被覆盖


        放在HashMap集合key部分的元素其实放到了HashSet集合中了
        所以HashMap集合中的元素也需要从写hashCode() 和 equals() 方法
        放到HashSet集合中的元素也需要从写hashCode() 和 equals() 方法

   5.  HashMap,哈希表使用不当时无法发挥性能,以下举例:
            如果将所有的hashCode() 返回固定的值,
            那么会导致底层哈希表变成了纯单向链表,这种情况称为:散列分布不均匀
                1) 散列分布均匀:
                    有100个元素,10个单向链表,每个单向链表中有10个节点
            如果将hashCode()方法返回值都设置不一样,
            这样底层导致底层哈希表变成了一维数组,这也是散列分布不均匀。

   6. HashMap初始容量为16,默认加载因子0.75
        默认加载因子就是,当HashMap的容量达到75%的时候,开始扩容。
        扩容之后的容量原容量的2倍。
        *** HashMap集合初始化容量必须是2的倍数 (官方推荐)     ***
        *** 这样做是为了达到散列均匀,为了提高HashMap的存取效率 ***

 */

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

public class HashMapTest01 {
    public static void main(String[] args) {
        // Integer 已经重写了hashCode() 和 equals()
        Map<Integer,String> map = new HashMap<>();
        map.put(101,"bgy101");
        map.put(202,"bgy202");
        map.put(303,"bgy303");
        map.put(303,"key重复,覆盖303的value");

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

        Set<Map.Entry<Integer, String>> nodes = map.entrySet();
        for (Map.Entry<Integer, String> node : nodes){
            System.out.println(node.getKey()+"----->"+node.getValue());
        }
    }
}

HashMapTest02.java

package bgy_hashmap01;

import java.util.*;

/*
    1. 向map中存储元素和取元素,都是先调用hashCode()方法,然后再调用equals()方法

    2. equals() 方法可能调用,也可能不调用
        put<k,v>() :
            1) k.hashCode()方法返回哈希值
            2) 哈希值经过哈希算法转换成数组下标
            3) 数组下标位置上如果是null,equals()方法就不会执行

        get(k) :
            1) k.hashCode()方法返回哈希值
            2) 哈希值经过哈希算法转换成数组下标
            3) 数组下标位置上如果是null,equals()方法就不会执行

     3. 如果一个类的equals()方法重写了,那么hashCode()方法必须重写。
        并且equals()方法返回如果是true,hashCode()方法返回值必须一样
            equals()方法返回true表示两个对象相同,在同一个单向链表上比较。
            所以对于同一个单向链表上的节点来说,它们的哈希值都一样,
            所以hashCode()方法返回值也一样。

    4. 放在HashMap集合的key部分,和放在HashSet集合中的元素,
       都需要同时重写hashCode() 和 equals()。

    5. 对于哈希表数据结构来说:
            1) 如果 Object01 和 Object02 的hash值相同,一定是放到同一个单向链表上,
            2) 如果 Object01 和 Object02 的hash值不同,
               但由于哈希值算法执行结束之后转换的数组下标可能相同,此时会发生“哈希碰撞”。
 */
public class HashMapTest02 {
    public static void main(String[] args) {

        Student s1 = new Student("白光一");
        Student s2 = new Student("白光一");

        System.out.println(s1.equals(s2));      // true

        System.out.println(s1+"hashCode is "+s1.hashCode());  // 29815091
        System.out.println(s2+"hashCode is "+s2.hashCode());  // 29815091

        /*
            HashSet 特点:
                无序不可重复
         */
        Set<Student> set = new HashSet<>();
        set.add(s1);
        set.add(s2);
        System.out.println(set.size());     // 1

    }
}

class Student{
    String name;

    public Student(){}

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

    public String getName() {
        return name;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}

HashMapTest03.java

package bgy_hashmap01;
/*
    HashMap集合key部分允许null,但是只能有一个,
    如果再有ket为null,覆盖value

    HashMap集合value部分也允许为null
 */
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapTest03 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(null,null);
        map.put(1,null);
        map.put(null,"test...");

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

        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        Iterator<Map.Entry<Integer,String>> it = entries.iterator();
        while (it.hasNext()){
            Map.Entry<Integer, String> next = it.next();
            System.out.println(next.getKey()+"------>"+next.getValue());
        }

    }
}

HashMap储存

基于ADRC算法的多旋翼飞行器抗扰动控制实践 本文详细介绍了基于ADRC算法的多旋翼飞行器抗扰动控制实践,通过线性扩张状态观测器(LESO)实时估算风力等扰动,实现提前补偿,显著提升飞行稳定性。文章结合具体案例和工程实现技巧,展示了ADRC在突风条件下的优异表现,为无人机控制提供了高效解决方案。 阅读详情

相关推荐

Git下载安装及环境配置,解决安装包下载慢问题(详细版)

Git是我们平时开发都要用到的项目管理工具,虽然有网页版的Git网站,但是在本地安装Git后,可以直接使用命令语句来进行项目的上传与克隆。还是非常方便的。今天就来介绍下Git的下载。1、首先在浏览器中搜索Git,进入到Git的官方下载界面或者直接复制下面这个链接。 2、点击download进入下载界面,选择自己需要平台的文件 3、下载标准版就可以4、但是会发现下载速度很慢,就找个镜像版 5、点击 https://registry.npmmirror.com/binary.html?path=git-for-

mengxiang_的博客 6万+

javase-collection-210623-02

javase-collection-210623-02 HashTable Properties HasTableTest01.java package bgy_hashtable01; import java.util.Hashtable; import java.util.Map; /* 1. HashTable中的方法都带有synchronized关键字,是线程安全的 线程安全目前有其它方案,HashTable对线程的处理导致效率较低,所以使用较少 2

白光一的博客 275

Python + Google AI 自动修复 Sonar Bug 实践

在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种问题已经累积到了上万个,手动修复不但费时费力,而且过程异常枯燥。

子洋 Blog 2415

javase-io-210509-02

javase-io-210509-02 File FIle Fiel 1、 File类和四大家族没有关系,所以FIle类不能完成对文件的读和写 2、 FIle对象代表 文件和目录路径名的抽象表示形式 C:\bgy 这是一个文件 C:\bgy\bgy.txt 这也是一个文件 Demo01.java import java.io.File; import java.io.IOException; public class Demo01 { public static v

白光一的博客 286

多臂老虎机——入门强化学习

多臂老虎机(Multi-Armed Bandit,MAB)问题是强化学习的经典入门例子,也是理解探索与利用(exploration-exploitation)平衡的重要案例。

qq_56683019的博客 2458

马尔可夫网络和贝叶斯网络的一些总结

马尔可夫网络和贝叶斯网络的一些总结 最近学习了一些关于概率逻辑的知识图谱推理方法,主要就是贝叶斯网络和马尔可夫网络,在此总结一下,内容都来自网络资料,这里加入了一下个人的理解,尽量为大家避雷! 这篇文章是我目前在网络上找到的关于贝叶斯网络最清晰的介绍,大家有兴趣可以去看看 贝叶斯网络中比较重要的两部分就是贝叶斯网络的结构和条件概率表。 贝叶斯网络的结构 下面通过一个例子来介绍: 贝叶斯网的网络结...

qq_43654303的博客 4374

javase-collection-210619-01

javase-collection-210619-01 Collection------remove() 在集合中使用remove()方法,会使得集合的结构发生改变,如果此时迭代器还是原来的那个,会报错 例子:CollectionTest02.java 1. 如果使用集合的remove()方法进行删除,要通知迭代器更新,否则报错 2. 或者使用迭代器的remove()方法进行删除 CollectionTest01.java package bgy_test_2161901; import j

白光一的博客 253

history 历史命令记录功能如何防坏人(高级)

在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作。但是黑客在入侵后,为了抹除痕迹,会删除 .bash_history 文件,这个就需...

墨痕诉清风的博客 1657

javase-collection-210408-01

javase-collection-210408-01 什么是集合 集合继承图 Collection常用方法 集合遍历迭代 contains方法 什么是集合 集合就是一个容器,数组就是一个集合,它可以来容纳其他类型的数据 集合不能直接存储基本类型的数据,另外集合也不能直接存储java对象, 集合当中存储的都是java对象的内存地址,或者说是集合中存储的引用 注:集合在java中本身是一个容器,是一个对象,集合中任何时候储存的都是引用 在java中每一个不同的集合,底层会对应不同的数据结构。往不

白光一的博客 250

【华为OD机试】贪吃蛇(python, java, c++, js)

贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。 下面让我们来完成贪吃蛇游戏的模拟。 给定一个NM的数组arr,代表NM个方格组成的版图,贪吃蛇每次移动一个方格。 若arr[i][j] == H,表示该方格为贪吃蛇的起始位置; 若arr[i][j] == F,表示该方格为食物, 若arr[i][j] == E,表示该方格为空格。 贪吃蛇初始长度为1,初始移动方向为向左。

A_D_I_D_A_S的博客 541

OpenClaw 钉钉和飞书集成方案研究 & OpenClaw 研究分析报告

OpenClaw(原名 Clawdbot,曾用名 Moltbot)是一款开源的个人 AI 智能体,采用"本地优先"设计理念。与传统聊天机器人不同,OpenClaw 具备真正的系统级执行能力,能够实际操作用户的计算机系统,完成各种实际任务。核心优势本地部署:所有数据存储在用户本地设备,隐私零泄露系统级执行:具备完整的系统访问权限,可执行文件操作、命令运行等全渠道交互:支持多种即时通讯平台作为交互界面开源透明:MIT 许可证,代码完全开放,社区驱动开发应用场景个人助理:日程管理、任务提醒、邮件处理。

AI天才研究院 2340

javase-io-210510-02

javase-io-210510-02 IO+Properties 读取配置文件 读取配置文件 IO + Properties Properties 是一个Map集合,key和value都是String类型 经常变的数据,可以单独写到一个文件中,让程序动态读取 那么我们就需要配置文件了,java规范中要求,属性的配置文件建议以 .properties 结尾,,但不是必须是 Demo01.java package com.bgy02; import java.io.FileNotFoundE

白光一的博客 240

腾讯面试——机器学习岗面试总结

先写合并两个有序数组,接着写合并n个有序的数组,假设总共m个数,讲了一个思路两两合并直到只剩下一个数组,分析一下时间复杂度(MlogN),面试官不满意,然后想了一下说了另一个思路,用n个指针开始指向各个数组的首端,用一个优先队列维护他们的最小值,每次拿出最小值的指针然后插入该指针的下一个值。感觉跟二面面试官聊得还是挺开心的,他详细地介绍了他们部门所做的业务,然后问了一下什么时候能来实现,我说只能暑假七八两个月,他觉得有点晚,这样子不利于转正,有些人都实习半年的,回去讨论一下,正式批之前给我答复。

FPGA/MATLAB学习教程/源码/项目合作开发 1231

javase-collection-210620-01

javase-collection-210620-01 List ArrayList ListTest01.java package bgy_list_01; import java.util.*; /* 1. List 特点: 有序可重复 1)有序:List集合中的元素有下标 从0开始,以1递增 2)可重复:存一个‘bgy’,还能再存一个‘bgy’ 2. List是Collection的子接口

白光一的博客 230

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

javase-collection-210624-01

javase-collection-210624-01 TreeSet Collections工具类 TreeSetTest01.java package bgy_treeset01; /* 1. TreeSet 集合底层实际上是一个TreeMap 2. TreeMap集合底层是一个二叉树 3. 放到TreeSet集合中的元素,等同于放到TreeMap集合key部分了 4. TreeSet集合 无序不可重复,可以按照元素的大小顺序自动排序,

白光一的博客 228

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

javase-io-210508-01

javase-io-210508-01 什么是IO IO分类 Java中IO四个部落 需要知道 1、什么是IO流 ​ I:Input ​ O:Output ​ 通过IO完成对硬盘文件的读和写 2、IO分类 1. 按照 流 的方式进行分类 以内存为参照物 往内存中去,叫做输入(Input),也叫读(Read) 从内存中出来,叫做输出(Output),也叫做写(Write) 2. 按照读取数据方式进行分类 一、 按照 字节方式

白光一的博客 217

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

javase-annotation-210710-01

javase-annotation-210710-01 注解解释 元注解 Retention源码 Target源码 注解解释 1) 注解 也叫注释,Annotation 2) 注解Annotation是一种引用数据类型,编译之后也是生成xxx.class文件 3) 自定义注解,语法如下: [修饰符列表] @interface 注解类型名{ } 4) 注解如何使用?在哪里使用? 注解使用语法格式: @注解类型名 注解可以出现在类上,属性上,方法上,变量上等

白光一的博客 211

javase-annotation-210710-02

javase-annotation-210710-02 注解中可以用的属性类型 反射获取类上的注解 反射获取类中方法上的注解 注解实例 注解中可以用的属性类型 MyAnnotation0301.java package bgy_annotation_02; public @interface MyAnnotation0301 { /* 注解当中的属性可以是哪种类型 byte short int long float double bool

白光一的博客 209

javase-reflect-210625-01

javase-reflect-210625-01 反射的理解 反射机制有什么用? 通过java语言中的反射机制可以操作字节码文件 类似于黑客。(可以读和修改字节码文件) 通过反射机制可以操作代码片段(class文件) 反射机制的相关类的包 java.lang.reflect.*; 反射机制的相关的重要类 java.lang.Class 代表整个字节码,代表一个类型。 代表整个类 java.lang.reflect.Method 代表字节码中的方法字节码。 代表类中的方法 J...

白光一的博客 206

javase-collection-210621-01

javase-collection-210621-01 LinkedList Vector LinkedListTest01.java package bgy_linkedlist01; /* LinkedList 的数据结构是 双向链表 基础单元为节点node 每一个节点node都有两个属性: 1. 存储的数据 2. 下一个节点的内存地址 LinkedList集合底层也是有下标的 ArrayL

白光一的博客 201

javase-javabase-210126-02

javase-javabase-210126-02 JavaDoc Scanner对象 重载 可变参数 递归 Java内存 数组 Arrays类 JavaDoc @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws

白光一的博客 199

javase-io-210509-01

javase-io-210509-01 FileReader FileWriter 拷贝 BufferedReader InputStreamReader BufferedWriter DataOutputStream DataInputStream PrintStream FileReader ​ 文件字符输入流,只能读取普通文本 ​ 读取文本内容,比较方便,快捷 Demo01 import java.io.FileNotFoundException; import java.io.FileRead

白光一的博客 197

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 285

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 198

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 128
上一篇: javase-collection-210622-02
下一篇: javase-collection-210623-02
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值