網(wǎng)站首頁 編程語言 正文
一、集合Map
Map是一個雙列集合,一個元素包含兩個值(一個key,一個value);
Map集合中的元素,key和value的數(shù)據(jù)類型可以相同,也可以不同 ;
Map中的元素,key不允許重復(fù),value可以重復(fù) ;
Map里的key和value是一一對應(yīng)的。
二、HashMap
HashMap底是哈希表,查詢速度非常快(jdk1.8之前是數(shù)組+單向鏈表,1.8之后是數(shù)組+單向 鏈表/紅黑樹 ,鏈表長度超過8時,換成紅黑樹);
HashMap是無序的集合,存儲元素和取出元素的順序有可能不一致 ;
HashMap集合是不同步的,也就是說是多線程不安全,單速度快。
HashMap<String, String> map = new HashMap<>();
HashMap常用操作:
import java.util.HashMap;
public class Practice14 {
public static void main(String[] args) {
//實(shí)例化
HashMap<String,String> hm = new HashMap<>();
System.out.println(hm.isEmpty());
//插入元素
hm.put("1","java");
hm.put("2","mysql");
hm.put("3","javascript");
System.out.println(hm);
System.out.println(hm.isEmpty());
System.out.println(hm.size());
System.out.println("---");
System.out.println(hm.containsKey("s3"));
System.out.println(hm.containsValue("java"));
System.out.println("---");
//刪除
//hm.clear();
//hm.remove("s1");//根據(jù)key刪除元素
//hm.remove("s1","myjava");//根據(jù)key value刪除元素
//修改
String str = hm.replace("s1","java18");
System.out.println(str);
System.out.println(hm);
//獲取元素
System.out.println(hm.get("s1"));//java
System.out.println(hm.getOrDefault("s3","html"));
System.out.println(hm.get("s3"));
}
}
運(yùn)行結(jié)果:
true
{1=java, 2=mysql, 3=javascript}
false
3
---
false
true
---
null
{1=java, 2=mysql, 3=javascript}
null
html
null
二、HashMap遍歷
有以下幾種遍歷方式:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Practice15 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("北京", "火鍋");
map.put("上海", "東方明珠");
map.put("鄭州", "方特");
map.putIfAbsent("杭州", "大閘蟹");
map.replace("武漢", "熱干面");
//第一種遍歷
for(Object key : map.keySet()) {
System.out.println("key:" + key + ",vaule:" + map.get(key));
}
System.out.println("--------------------");
//第二種遍歷
Iterator<String > it = map.keySet().iterator();
while (it.hasNext()) {
Object key = it.next();
System.out.println("key:" + key + ",vaule:" + map.get(key));
}
System.out.println("--------------------");
//第三種遍歷
Iterator<Map.Entry<String , String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String , String> entry = iterator.next();
System.out.println("key:" + entry.getKey() + ",vaule:" +
entry.getValue());
}
System.out.println("--------------------");
//第四種遍歷
for (Map.Entry<String,String> entry: map.entrySet()) {
System.out.println("key:" + entry.getKey() + ",vaule:" +
entry.getValue());
}
System.out.println("--------------------");
//第五種遍歷
map.forEach((key,value) -> {
System.out.println("key:" + key + ",vaule:" + value);
});
System.out.println("--------------------");
//第六種遍歷
map.entrySet().forEach(item -> {
System.out.println("key:" + item.getKey() + ",vaule:" +
item.getValue());
});
System.out.println("--------------------");
//第七種遍歷
map.keySet().forEach(item -> {
System.out.println("key:" + item + ",vaule:" + map.get(item));
});
}
}
運(yùn)行結(jié)果:
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
--------------------
key:上海,vaule:東方明珠
key:鄭州,vaule:方特
key:杭州,vaule:大閘蟹
key:北京,vaule:火鍋
?
原文鏈接:https://blog.csdn.net/xiaobaistudyjava/article/details/126959866
相關(guān)推薦
- 2022-02-27 通用mapper的查詢,selectByPrimaryKey、select、selectByExam
- 2023-01-11 React中映射一個嵌套數(shù)組實(shí)現(xiàn)demo_React
- 2022-08-10 C#多線程之線程綁定ThreadLocal類_C#教程
- 2021-11-08 Linux常用硬盤管理相關(guān)命令介紹_Linux
- 2022-01-06 react實(shí)現(xiàn)todolist的增刪改查
- 2022-05-11 Feign之間的文件傳輸
- 2022-06-17 Go基礎(chǔ)教程系列之WaitGroup用法實(shí)例詳解_Golang
- 2022-12-24 一文帶你搞懂Python中的數(shù)據(jù)容器_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支