java-Map集合hei
/*
Map集合的特点:
Map集合市一个双列集合,一个元素包含两个值:一个key,一个value
Map集合中的元素,key和value的数据类型可以相同,也可以不同
Map集合中的元素,key不允许重复的,value是可以重复的
Map集合中的元素,key和value是一一对应的
*/
/*
HashMap集合特点;
底层是哈希表:查询速度非常块
1.8之前是:数组+单向链表
1.8之后是:数组+单向链表/红黑树(当链表长度超过8):提高查询的速度
hashmap集合是一个无序的集合,存储元素和取出元素的顺序可能不一样
LinkedHashMap集合特点:
底层是哈希表+链表(保证迭代的顺序)
是一个有序的集合,存储元素和取出元素的顺序是一致的
*/
Map接口常用的方法:
/*
V put(K key, V value) 将指定的值与该映射中的指定键相关联(可选操作)。
返回值是 V
存储键值对的时候,key如果不重复,返回v是null
如果重复,会使用新的value替换map中重复的value,并返回被替换的value值 */ public static void show1(){
Map<String,String> map = new HashMap<>(); String v1 = map.put("AAAA","1111");
System.out.println(v1); String v2 = map.put("AAAA","aaaa");
System.out.println(v2);//返回被替换的值 map.put("BBBB","2222");
map.put("CCCC","3333");
map.put("DDDD","3333");
System.out.println(map);
}
/*
V remove(Object key) 如果存在(从可选的操作),从该地图中删除一个键的映射。
返回值:V
Key存在,返回被删除的值
key不存在,返回null
*/
public static void show2(){
Map<String,Integer> map = new HashMap<>();
map.put("AAA",11);
map.put("BBB",33);
map.put("CCC",22);
map.put("DDD",41);
System.out.println(map);//{AAA=11, CCC=22, BBB=33, DDD=41}
//删除存在的key值
Integer v = map.remove("DDD");
System.out.println(v);//42
System.out.println(map);//{AAA=11, CCC=22, BBB=33}
//删除不存在的key值
Integer v2 = map.remove("EEE");
System.out.println(v2);//null
}
public static void show3(){
/*
V get(Object key) 根据指定的键,再map集合中获取对应的值
返回值:
key存在,返回对应的value值
不存在,返回null
*/
Map<String,Integer> map = new HashMap<>();
map.put("AAA",11);
map.put("BBB",33);
map.put("CCC",22);
map.put("DDD",41); Integer v1 = map.get("CCC");
System.out.println(v1);//22 Integer v2 = map.get("OOO");
System.out.println(v2);//null
}
public static void show4(){
/*
boolean containsKey 判断集合是否包含指定的键
包含返回true,不包含返回false
*/
Map<String,Integer> map = new HashMap<>();
map.put("AAA",11);
map.put("BBB",33);
map.put("CCC",22);
map.put("DDD",41); boolean b1 = map.containsKey("AAA");
System.out.println(b1); //true boolean b2 = map.containsKey("OOOO");
System.out.println(b2);//false
}
遍历map集合
/*
map集合的第一中遍历方式,通过键找值得方式
map集合中得方法:
Set<K> keySet() 返回此映射中包含得键得Set视图
实现步骤:
使用Map集合中得方法keySet(),把Map集合所有得key取出,存储到一个Set集合里面
通过遍历Set集合,获取Map集合中得每一个key
通过Map集合中得方法get(key),通过key找到value
*/
public class Demo2 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("AAA",11);
map.put("BBB",33);
map.put("CCC",22);
map.put("DDD",41); Set<String> set = map.keySet();
Iterator<String> it =set.iterator();
while(it.hasNext()){
String key = it.next();
Integer value = map.get(key);
System.out.println(key + "=" + value);
}
System.out.println("###################");
// for (String key:map.keySet())更简洁得做法
for (String key:set){
System.out.println(key + "=" + map.get(key));
}
} }
/*
AAA=11
CCC=22
BBB=33
DDD=41
###################
AAA=11
CCC=22
BBB=33
DDD=41
*/
Entry对象
/*
使用 Entry对象遍历
Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图。
实验不走:
使用Map集合中得方法,entrySet(),把Map集合中多个Entry对象取出来,存储到Set集合
遍历Set集合,获取每一个Entry对象
使用Entry对象里的getKey getValue获取键值对
*/
public class Demo3 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("AAA",11);
map.put("BBB",33);
map.put("CCC",22);
map.put("DDD",41); Set<Map.Entry<String,Integer>> set = map.entrySet(); Iterator<Map.Entry<String,Integer>> it = set.iterator();
while (it.hasNext()){
Map.Entry<String,Integer> entry = it.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "=" + value);
}
}
}
/*
AAA=11
CCC=22
BBB=33
DDD=41 */
HashMap存储自定义类型
/*
Map集合保证key是唯一的:
作为key的元素,必须重写hashCode和quals方法,以保证key唯一 */
public class Demo4 {
public static void main(String[] args) {
show2();
}
//必须重写函数 private static void show2(){
HashMap<Person,String> map = new HashMap<>(); map.put(new Person("AAA",11),"aaa");
map.put(new Person("BBB",13),"bbb");
map.put(new Person("AAA",11),"ddd");
map.put(new Person("CCC",21),"ccc"); System.out.println(map);
// {Person{name='BBB', age=13}=bbb, Person{name='AAA', age=11}=ddd, Person{name='CCC',
age=21}=ccc}
} private static void show1(){
HashMap<String,Person> map = new HashMap<>(); map.put("背景",new Person("AAA",11));
map.put("关东",new Person("BBB",31));
map.put("上海",new Person("CVC",21));
map.put("背景",new Person("CC",21)); // 遍历结合
Set<String> set = map.keySet();
for (String s :set){
Person p = map.get(s);
System.out.println(s + "=" + p);
} }
}
LinkedHashMap集合
/*
map接口的哈希表和连接列表实现,具有可预知的迭代顺序
底层原理:
哈希表+链表(记录元素的顺序)
*/
public class Demo8 {
public static void main(String[] args) {
LinkedHashMap<String,String> map2 = new LinkedHashMap<>();
map2.put("AA","aa");
map2.put("cc","cc");
map2.put("BB","bb");
map2.put("AA","dd");
System.out.println(map2); } }
Hashtable集合
/*
java.util.Hashtable<k,v> 集合 implaments Map<k,v>接口
Hashtable 底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap 底层也是一个哈希表,是一个线程不安全的集合,是多线程的结合,速度块 HashMap集合(之前的集合都可以) 可以存储null键值,和null值
Hashtable 不能存储null值,null键 Hashtable 的子类properties很活跃
properties 是唯一一个和I/O流有关的集合
*/
public class Demo11 {
public static void main(String[] args) {
HashMap<String,String> map = new HashMap<>();
map.put("AA",null);
map.put(null,"QQ");
map.put(null,null);
System.out.println(map);//{AA=null, null=null} Hashtable<String,String> table = new Hashtable<>();
table.put(null,"DD");//java.lang.NullPointerException
table.put("EE","ee");
System.out.println(table);
}
}
java-Map集合hei的更多相关文章
- Java Map 集合实现类
Map 用于保存具有映射关系的数据,集合里会保存两组值,一组用于保存Map里的key,一组用于保存Map里的value,key与map可以是任何引用类型数据.Map的key不允许重复.key与valu ...
- Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)
示例代码如下: package com.miracle.luna.lambda; import java.util.HashMap; import java.util.Iterator; import ...
- Java | Map集合
Map集合 在现实生活中,有非常多的东西,是和另外一种东西对应的,并且还是唯一的,比如:身份证号与个人,个人与手机,一夫一妻...等,这种关系就是对应关系,又叫做映射.Java为这种数据类型提供了专门 ...
- java Map集合对比分析
1.Map:Map是所有map集合的顶级父接口,用于key/value形式的键值对,其中每一个key都映射到一个值,key不能重复. 2.TreeMap:该map将存储的键值对进行默认排序,并且还能够 ...
- Java Map集合按照key和value排序之法
一.理论基点 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black-Tre ...
- Java学习笔记之:Java Map集合
一.介绍 通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的. 二.笔记 /** * Map:接口. 不是collection的子类 key -value 键值对 key唯一不能重 ...
- java map集合的知识
/** * Map用于存储键值对,不允许键重复,值可以重复. * (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度. * H ...
- java map集合 --遍历
1.Map 遍历: Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "a& ...
- java Map集合学习
学习语法还是从例子着手: FileDao fileDao=new FileBeanDaoImpl(); FileBean fileBean=new FileBean(); listBean=fileD ...
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
随机推荐
- 大数据时代变局与机遇,BI数字化转型的实战攻略!
党的十九大报告提出,要推动互联网.大数据.人工智能和实体经济深度融合.更加高效地获取.运用信息,成为企业具有强大竞争力的重要标志.我国企业应牢牢把握历史性机遇,以更加开放的姿态,积极拥抱新经济,积极参 ...
- python运算符优先级及部分运算
在python里面,有很多运算符,比如:算术运算符.赋值运算符.比较运算符.逻辑运算符.成员运算符.身份运算符和位运算符等.这里主要来看看这些运算符的优先级:从上到下优先级依次递减. 优先顺序 运算符 ...
- 细述kubernetes开发流程
本文介绍如何对kubernetes进行二次开发,仓库如何管理,git分支如何管理,怎样利用CI去编译与发布以及如何给社区贡献代码等,结合实际例子,望对大家有所帮助. 开发环境构建 Fork 把gith ...
- c# 编程学习(五)
使用复合赋值和循环语句 使用 while 语句,可在条件为 true 的前提下重复运行一个语句.while 语句的语法如下: while ( booleanExpression ) statemen ...
- 【C# .Net GC】延迟模式 latencyMode 通过API-GC调优
延迟模式 lowlatency 使用环境:后台工作方式只影响第 2 代中的垃圾回收:第 0 代和第 1 代中的垃圾回收始终是非并发的,因为它们完成的速度很快.GC模式是针对进程配置的,进程运行期间不能 ...
- VisualStudio2019 利用代码片段管理器新建快捷命令
原文:https://www.cnblogs.com/huguodong/p/12694902.html 一.前言 VisualStudio 可以通过敲出缩写字符串,然后按两次Tab按键自动展开成一段 ...
- Arava: 写一个控制台风格的Mp3播放器
Mp3播放器 来写一个控制台版的mp3播放器.以前很喜欢 cmd.fm 这种控制台风格的播放器. 播放mp3使用 mp3spi 库:下载mp3spi库文件,解压,拿出根目录下的 mp3spi1.9.5 ...
- python文件操作glob_os_等对比
Python标准库glob介绍 一. glob模块通配符 通配符 功能 * 匹配0或多个字符 ** 匹配所有文件,目录,子目录和子目录里面的文件 (3.5版本新增) ? 匹配一个字符,这里与正则表达式 ...
- 基于SqlSugar的数据库访问处理的封装,支持多数据库并使之适应于实际业务开发中
在我的各种开发框架中,数据访问有的基于微软企业库,有的基于EFCore的实体框架,两者各有其应用场景,不过多的去比较.最近在使用SqlSugar的时候,觉得这个数据访问处理的组件确实很灵活,据说性能也 ...
- 如何在矩池云上运行FinRL-Libray股票交易策略框架
FinRL-Libray 项目:https://github.com/AI4Finance-LLC/FinRL-Library 选择FinRL镜像 在矩池云-主机市场选择合适的机器,并选择FinRL- ...