JAVA中的Map集合_521125LYC的博客-程序员宝宝

技术标签: javase  map  

JAVA中的Map集合

1.Map简介

java.util.map接口

1.Map称为查找表,该数据结构的样子是一个“多行两列”的表格,左列为key,右列为value,Map总是根据key查找相对的value,存储元素也要求以key-vaule成对存入。

2.常见的实现类:java.util.HashMap 哈希表

3.HashMap是基于散列算法实现的Map,也是当前 世界上最快的查询结构。

2.Map集合常用的几种方法

1.put(key,value)

map提供了存储元素的方法,put(key,value);

Map有一个要求,key不允许重复(key的equals比较而决定)。

若使用Map已有的Key存入的value则是替代value,那末put方法

返回的就是被替换的value,若没有替换则返回null,在这里返回类型切记是包装类型,否则会发生空指针异常。

		Integer n=map.put("语文",100);
		n=map.put("语文",50);
		System.out.println(n);
		System.out.println(map);
		map.put("数学", 20);
		map.put("英语",30);
		map.put("化学",66);
		//map集合的长度
		System.out.println(map.size());
		System.out.println(map);
执行结果:

100
{语文=50}
4
{数学=20, 化学=66, 语文=50, 英语=30}

2.get(key k)

根据给定的key获取对应的value,若给定的key不存在则返回null,
map提供了获取value值得方法get(key k);

		//查看英语成绩
		Integer w=map.get("英语");
		System.out.println(w);
执行结果:

30

3.remove(key k);

删除当前map中给定得key所对应得这组键值对,返回值为key所对应得value值,如果给定得key不存在,则返回null。 map提供了删除元素得方法remove(key k);

		Integer y=map.remove("英语");
		System.out.println("remove后得map集		合:"+map);
		System.out.println(y);
执行结果:

remove后得map集合:{数学=20, 化学=66, 语文=50, 英语=30}
30

4.containsKey(key k),containsValue(Value v)

判断当前得map是否包含给定的key或value; map提供了方法Boolean containsKey() ,Boolean containsValue()返回boolean类型.

public class MapDemo2 {
    
	public static void main(String[] args) {
    
		Map<String,Integer> map=new HashMap<String, Integer>();
		map.put("数学", 20);
		map.put("英语",30);
		map.put("化学",66);
		
		boolean b=map.containsKey("物理");
		System.out.println(b);
		
		boolean p=map.containsValue(30);
		System.out.println(p);
		
		
	}
}
执行结果:

false
true

3.Map集合的遍历

map集合遍历

map集合遍历的方式有三种:

1.遍历所有的key

map提供了Set setKey()将当前map中的所有key存入到一个集合Set中返回遍历这个Set集合相当于遍历所有的key。

		Map<String, Integer> map=new 	HashMap<String, Integer>();
		map.put("数学",20);
		map.put("英语",30);
		map.put("化学",66);
		map.put("化学",45);

		Set<String> set=map.keySet();
		for(String s:set){
    
			System.out.println(s);
		}
执行结果:

数学
化学
英语

2.遍历所有的value(不常用)

获取并遍历map集合中的value值,Collection values将当前map中的所有value以一个集合的形式返回;

		Collection<Integer> c=map.values();
		for(Integer t:c){
    
			System.out.println(t);
		}
执行结果:

20
45
30

3.遍历所有的key—value

遍历每一组键值对
在map接口定义一个内部接口java.util.map.Entry
Map提供了entrySet()返回Set 集合,Entry的每一个实例用于表示当前Map集合中的一组键值对,其提供了
两个常用的方法:
1.getKey返回key,获取key的值
2.getValue返回value,获取value的值

Set<Entry<String, Integer>> entry=map.entrySet();
		for(Entry<String, Integer> e:entry){
    
			String key=e.getKey();
			Integer value=e.getValue();
			System.out.println(key+","+value);
		}
执行结果:

数学,20
化学,45
英语,30

4.Map中存放List(案例)

模拟商品分类:

  • 1.一级分类:家用电器
  • 2.二级分类:电视机,冰箱,洗衣机,空调,生活电器
  • 3.三级分类:电视(平板电视,家庭影音),冰箱(对开门冰箱,普通冰箱),空调(壁挂式空调,立柜式空调),生活电器(吸尘器,净化除醛)
public class MapAndListDemo {
    
	public static void main(String[] args) {
    
		//一级分类
		List<String> one=new ArrayList<String>();
		one.add("家用电器");
		//二级分类
		List<String> two=new ArrayList<String>();
		two.add("电视机");
		two.add("冰箱");
		two.add("空调");
		two.add("生活电器");
		List<String> three=new ArrayList<String>();
		three.add("平板电视");
		three.add("家庭影音");
		three.add("对开门冰箱");
		three.add("普通冰箱");
		three.add("壁挂式空调");
		three.add("立柜式空调");
		three.add("吸尘器");
		three.add("净化除醛");
		
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("one", one);
		map.put("two",two);
		map.put("three",three);
		System.out.println(map);
		
		//遍历map集合
		Set<Entry<String,Object>> entry=map.entrySet();//获取map集合中所有的键值对
		for(Entry<String, Object> e:entry){
    //遍历map集合中所有的键值对
			String key=e.getKey();
			System.out.println(key);
			List<String> listvalue=(List<String>)e.getValue();//遍历list集合
			for(String v:listvalue){
    
				System.out.println(v);
			}
		}
	}
}
执行结果:

{one=[家用电器], two=[电视机, 冰箱, 空调, 生活电器], three=[平板电视, 家庭影音, 对开门冰箱, 普通冰箱, 壁挂式空调, 立柜式空调, 吸尘器, 净化除醛]}
one
家用电器
two
电视机
冰箱
空调
生活电器
three
平板电视
家庭影音
对开门冰箱
普通冰箱
壁挂式空调
立柜式空调
吸尘器
净化除醛

结果说明:

先往三个list集合中存放元素,再分别将三个list集合以key-value的形式存放到一个map集合中。然后利用entrySet()得到map集合中所有的键值对,再遍历map集合中的键值对,在遍历时要注意,获取key时可以利用getkey直接得到,而获取value时,还要遍历当前的list集合,得到当前list集合中的相关元素。

5.list集合中存放map集合

public class MapAndListDemo2 {
    
	public static void main(String[] args) {
    
		Map<String,Object> map=new HashMap<String, Object>();
		map.put("name", "lyc");
		map.put("pwd", "1515");
		map.put("id", "2");
		
		List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
		list.add(map);
		System.out.println(list.size());
		System.out.println(list);
		
		//遍历出所有list中map的所有key和value
		for(Map<String, Object> s:list){
    //遍历list集合
			Set<Entry<String,Object>> entry=s.entrySet();//获取map集合中所有的键值对
			for(Entry<String, Object> e:entry){
    //遍历map集合中所有的键值对
				String key=e.getKey();
				String value=(String)e.getValue();
				System.out.println(key+","+value);
			}
		}
	}
}

执行结果:

1
[{name=lyc, id=2, pwd=1515}]
name,lyc
id,2
pwd,1515

结果说明:

先往map集合中存放键值对,再将map结合存放到list集合中,然后遍历list集合,在遍历list集合时,每次获取到map集合的键值对,再对map集合遍历,这样就可以 得到list集合中map的key和value了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47600732/article/details/115257676

智能推荐

Android 4.2蓝牙介绍_weixin_34124577的博客-程序员宝宝

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

开发者入门必读:最值得看的十大机器学习公开课_cicilover的博客-程序员宝宝

[转] http://www.leiphone.com/news/201701/0milWCyQO4ZbBvuW.html导语:入门机器学习不知道从哪着手?看这篇就够了。在当下的机器学习热潮,人才匮乏十分显著。截至目前,国内开设人工智能(AI)专业的高校不多,相当多的开发者是跨界入门,需要自学大量知识并摸索。因而优质的学习资源至关重要

GMap地图的加载和现实_GreenPill的博客-程序员宝宝

GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够使用来自Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等地图,并可以实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。 现在我们来谈谈GMap的加载。 1、下载dll文件。 GMap主页

Android 内核调用充电状态和电池电量_火星papa的博客-程序员宝宝_android 获取电量和充电状态

Android 内核调用充电状态和电池电量前言一、调用的文件二、调用函数1.引入使用2.返回值说明小结前言因为Android项目需求,不是什么时候都是用APP来实现功能,部分项目是要求需要驱动需要独立完成部分系统层面的功能,针对MTK Android下面,kernel-4.9 讲一下内核可以调用的充电状态和电池电量的C函数。提示:以下是本篇文章正文内容,下面案例可供参考。一、调用的文件1、路径:…\kernel-4.9\drivers\misc\mediatek\include\mt-plat\

MT4提示警示return value&amp;nbs…_sjpljr的博客-程序员宝宝

问题1:MT4提示警示return value of 'OrderClose' should bechecked代码编程不够严谨的警告,非代码错误。不会影响你EA的运行。新版的MQL4对于订单类函数语句要求函数的返回值要明确,否则会出现此种警告。 orderclose(); orderselect();   ordersend();  OrderDelete(OrderTic

随便推点

HDU 4513 吉哥系列故事 完美队形II (manacher)_TaoSama的博客-程序员宝宝

题意: N<=105的串,求最长回文串,并且左边的部分是不降的N<=10^5的串, 求最长回文串, 并且左边的部分是不降的分析: 计算p数组的时候判断一下就好了,−−注意′#′计算p数组的时候判断一下就好了, - - 注意'\#'代码://// Created by TaoSama on 2015-11-03// Copyright (c) 2015 TaoSama. All r

hdu 1907 John_LeeHolmes的博客-程序员宝宝

JohnTime Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 4462    Accepted Submission(s): 2554Problem DescriptionLittle John is playin

input密码框禁止自动填充密码_遇见橘子7的博客-程序员宝宝_input禁止自动填充

针对密码框浏览器默认自动填入密码,并且会弹出保存密码提示

关于苹果手机的真机调试_Peng_Ruan的博客-程序员宝宝_苹果 真机调试

首先,你要有苹果手机,苹果电脑,硬件都有了的话请看下面的步骤1、将你的手机连接到电脑,手机上会提示是否信任此电脑,一定要选择信任哦!2、打开你电脑上的这个东西然后点击这里,再然后一直点这个东西,直到出现UDID,右键复制下来。3、登陆你的开发者账号点这个4、然后点击这个进去之后是这样的第一个填用户名

(191)FPGA上电后IO的默认状态(Vivado软件默认为0)_宁静致远dream的博客-程序员宝宝_fpga上电io状态

(191)FPGA上电后IO的默认状态(Vivado软件默认为0)1 文章目录1)文章目录2)FPGA入门与提升课程介绍3)FPGA简介4)FPGA上电后IO的默认状态(Vivado软件默认为0)5)技术交流6)参考资料2 FPGA入门与提升课程介绍1)FPGA入门与提升文章目的是为了让想学FPGA的小伙伴快速入门以及能力提升;2)FPGA基础知识;3)Verilog HDL基本语法;4)FPGA入门实例;5)FPGA设计输入,包括代码输入、原语输入;

sturts-2.0动态方法测试,!不起作用?????_-CeladoDream的博客-程序员宝宝

1/要先开启动态方法 <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> 2/如果开启后使用”!”后加方法名字无法调用或者调用失败的时候,那么这个时候有可能是因为框架本身在方法调用上是严格要求模式,如何修改模式呢?如下: <package name="house" namespa