首页 > 其他分享 >HashMap 以及多线程基本感念

HashMap 以及多线程基本感念

时间:2023-04-24 17:33:10浏览次数:44  
标签:HashMap 映射 感念 Object 线程 key 进程 多线程

 

接口 Map :映射项,(键值对 ) 的容器
注意: 键 是唯一的
值 是可以重复的
实现类 HashMap :哈希表结构 允许使用null值 和 null 键 线程不安全 键唯一 无序
linkedHashMap: 保证插入顺序 和迭代顺序一致
Hashtable:数据结构:哈希表 不允许使用nullnull值 和 null 键,线程安全
pronerties 持久属性集,键和值都是字符串 可保存在流中和从流中加载
TreeMap:数据结构 :红黑树;排序

HashMap 初始容量 16,扩容时机就是加载因子控制,初始加载因子0.75
初始容量✖加载因子 开始扩容

 

增:
1. V put(K key, V value)
将指定的值与此映射中的指定键关联(可选操作)。
2.void putAll(Map<? extends K,? extends V> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。

删除:

1. void clear() 删除
从此映射中移除所有映射关系(可选操作)。

2. V remove(Object key) 根据键 来删出一个映射关系
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。



1. int size() :Map中映射项的个数
返回指定键所映射的值;如果Map中没有元素,则返回 null。
2. int hashCode()
返回此映射的哈希码值。
3.Set<K> keySet() 将键 存入 Set中 然后将set结合返回
返回此映射中包含的键的 Set 视图。
4. Collection<V> values()
返回此映
3. Set<Map.Entry<K,V>> entrySet():将所有的硬设项,作为元素存入set集合中,再将set集合返回

判断

1.boolean isEmpty() :是否为空
2. boolean equals(Object o)
比较指定的对象与此映射是否相等。
3.boolean containsKey(Object key) :是否包含键
4.boolean containsValue(Object value):是否包含值
5.V get(Object key) 根据键 获取值

(先继承 再实现)
Arrays 数组
Collections 集合

1.static int binarySearch (int[] a, int key) 二分法查找 :升序

 

多线程基础

1.程序 (Program) 是一个静态的概念 , 一般对应与操作系统中的一个可执行的文件

2.执行中的程序叫做 进程 Process 是一个动态的概念, 其实进程就是一个内存中独立运行的 程序空间

3.LInux 是服务器 Windows : ”多任务“的操作系统 操作系统可以同时运行多个任务

4.时间片轮转调度算法
单核的话 你们这些软件 只能运行5毫秒 然后下一个 进行线程切换

5.线程 进程的分支 我们称为线程

总结 1 .程序 没有开始运行的代码
2进程 开始执行的程序
3.多线程 Thread 一个程序内部 需要做多任务


一条生产线 多个工人 单进程多线程
多个生产线 多个工人 多进程 多线程

线程是程序执行的最小单位
一个进程 由一个或多个线程组成
线程是一个进程中代码的不同执行路线
进程之间是相互独立的 ,同一个进程下 线程是共享内存空间的 包括 (代码段, 数据集堆等)

并发 多个线程同时运行 一个CUP下 计算机采用时间片 算法 其他线程处于就绪状态 这种方式我们称为并发

串行 一个cup 任务 A ->B ->C
并行 任务数量小于CPU核数 就是任务真的是一起执行的

一个cpu A 执行一会儿 B 执行一会儿 C 执行一会儿 轮着来 称为 并发

 

标签:HashMap,映射,感念,Object,线程,key,进程,多线程
From: https://www.cnblogs.com/ningbaoer/p/17350284.html

相关文章

  • 如何遍历HashMap集合?
    在Java中,HashMap是一种常用的数据结构,它提供了快速的查找、插入和删除操作。当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现。方法一:使用键值对遍历HashMap中存储的是键值对的形式,因此最简单的方法就是直接遍历键值对。我们可以通过以下代码实现://创建一个Ha......
  • C# 多线程记录
    ​ 开发中经常遇到不同的业务访问同一个数据源,而每一个业务的执行流就是一个线程,此时线程一多就会产生多线程最容易遇到的问题——并发。什么是并发?        举个很经典的例子:程序中我们经常要操作一些对象,尤其是内存中的数据             例如当......
  • Android多线程通信-handler机制
    AndroidStudio主线程不允许耗时操作,最后通过多线程实现了AndroidStudio远程连接数据库但是主线程可以分线程传值,分线程却不可以直接向主线程传值AndroidStudio通过handler和massage解决了这个问题 话不多说,看代码——privateHandlerhandler=newHandler(){@Overridep......
  • Python之多进程与多线程
     1.1线程frommultiprocessingimportProcessdefshow(name):print("Processnameis"+name)if__name__=="__main__":proc=Process(target=show,args=('subprocess',))proc.start()proc.join()......
  • python--多线程:锁 、全局锁、Queue队列以及线程池
    关于如何加锁,获取钥匙,释放锁:lock=threading.Lock():生成锁对象,全局唯一;lock.acquire():获取锁。未获取到会阻塞程序,直到获取到锁才会往下执行;lock.release():释放锁,归回后,其他人也可以调用;【注意事项】:lock.acquire()和lock.release()必须成对出现,否则就有可能造成......
  • C++ - 多线程之初识多线程
    1.认识多线程传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h>。C++11提供了语言层面上的多线程,包含在头文件<thread>中。它解决了跨平台的问题,提供......
  • 《面试1v1》HashMap
    没有人比中国人更懂HashMap我是javapub,一名Markdown程序员从......
  • ZSTD多线程压缩
    测试代码:1//main.cpp2//34#include<iostream>5#include<fstream>6#include<vector>7#include<chrono>8#include<thread>9#include"./zstd/lib/zstd.h"1011usingbyte=uint8_t;12usingbuff......
  • python多线程接口请求
    importthreadingimportrequestsrequests.packages.urllib3.disable_warnings()urls_list=["http://127.0.0.1:5000"for_inrange(1,101)]response_ok=0response_error=0defget_response_code(url):globalresponse_errorglobalr......
  • 多线程 —— 线程的六种状态
    一、线程的六种状态,如下图所示二、六种状态介绍:线程状态具体含义NEW一个尚未启动的线程的状态。也称之为初始状态、开始状态。线程刚被创建,但是并未启动。还没调用start方法。MyThreadt=newMyThread()只有线程对象,没有线程特征。RUNNABLE当我们调用线程对象的s......