Map

本文深入解析Java中的Map集合,包括其特点、常用方法、不同类型的Map实现如HashMap、LinkedHashMap和Hashtable,以及自定义类型的键值存储技巧。同时,文章详细介绍了Map集合的两种遍历方式,帮助读者全面掌握Map集合的使用。

java.util.Map<k, v>集合Map集合:

特点:
	1.Map集合是一个双列集合,一个元素包含两个值(一个key, 一个value)
	2.Map集合中的元素, key和value的数据类型可以相同,也可以不同
	3.Map集合中的元素, key是不允许重复的,value是可以重复的
	4.Map集合中的元素, key和value是一一对应

常用方法:
	public v put(K key, V value):把指定的鍵与指定的値添加到Map集合中。或修改给定键的值
		返回値:v
		存储键值对的时候, key不重夏,返回値v是null
		存储键值对的时候, key重夏,会使用新的value替換map中重夏的value,返回被替換的value値

	public v remove(Object key): 把指定的键 所对应的键值对元素 在Mop集合中刪除,返回被刪除元素的値。
		返回値:v
		key存在, v返回被刪除的値
		key不存在, v返回null

	clear():清空集合

	size():获取键值对对数

	isEmpty:是否为空

	public V get(Object key)根据指定的键,在Map集合中获取对应的值
		返回值:
		key存在:返回对应的value值
		key不存在:返回null

	public boolean containsKey(Object key):判断集合中是否包含指定的建
		包含返回true
		不包含返回false

	public boolean containsValue(Object value):判断集合中是否包含指定的值

	Collection<V>	values() : 返回此映射所包含的值的 Collection 视图。

java.util.HashMap<k,v>

	 java.util.HashMap<k,v>集合 implements Map<k, v>接口
		HashMap集合的特点:
			1.HashMap集合底层是哈希表:查询的速度特别的快
				JDK1.8之前:数组+单向链表
				JDK1.8之后:数组+单向链表/红黑树(链表的长度超过8) :提高查询的速度
			2. hashMap集合是-一个无序的集合,存储元素和取出元素的顺序有可能不一致

java.util.LinkedHashMap<k,v>

java.util.LinkedHashMap<k,v>集合 extends HashMap<k, v>集合
	LinkedHashMap的特点:
		1. linkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
		2. linkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

遍历方式

Map集合的第一种遍历方式;通过键找值的方式
	Map集合中的方法:
		Set<K> keySet() 返回此映射中包含的鍵的Set视图。
		把Map集合中的所有的key取出来存储到Set集合中
		使用迭代器/增强for 遍历Set集合 获取Map集合中的每一个key
		get(key) 通过key获取value
	实现步骤:
		1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
		2.遍历set集合,获取Map集合中的毎一个key
		3.通过Map集合中的方法get(key),通过key找到value

		//创建Map集合対象
		Map<String,Integer> map = new HashMap<>();
		map. put( "赵丽颖",168);
		map. put("杨颖" ,165);
		map. put("林志玲”,178);

		//1.使用Map集合中的方法keySet(),把Mop集合所有的key取出来,存儲到- 个Set集合中
		Set<String> set = map.keySet();

		//2.遍万set集合,获取Map集合中的毎一-个key//使用迭代器遍万Set集合
		Iterator<String> it = set.iterator();
		while (it.hasNext())
		{
			String key = it.next();
			//3.通述Map集合中的方法get(key),通辻key找到value
			Integer value = map.get(key);
			System.out. println(key+"="+value);
		}
		System.out.println("--------------------");
		//使用增强for遍历Set集合
		for(String key : map.keySet()){
			//通过Map集合中的方法get(key),通过key找到value
			Integer value = map.get(key);
			System.out.println(key+"="+value);}

Map集合的第二种遍历方式:使用Entry对象遍历
	Map集合中的方法:
		Set<Map. Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图。
	实现步骤:
		1.使用Map集合中的方法entrySet().把Map集合中多个Entry对象取出来,存储到一个Set集合中
		2.遍历set集合,获取每个Entry对象
		3.使用Entry对象中的方法getkey()和getValue()获取键与值

		//创建Map集合対象
		Map<String,Integer> map = new HashMap<>();
		map. put( "赵丽颖",168);
		map. put("杨颖" ,165);
		map. put("林志玲”,178);

		//1.使用Map集合中的方法entrySet().把Map集合中多个Entry对象取出来,存储到一个Set集合中
		Set<Map.Entry<String,Integer>> set = map.entrySet();

		//2.遍历set集合,获取每个Entry对象
		Iterator<Map.Entry<String,Integer>> it = set.iterator();
		while (it.hasNext())
		{
			Map.Entry<String,Integer> entry = it.next();
			//3.使用Entry对象中的方法getkey()和getValue()获取键与值
			String key = entry.getKey();
			Integer value = entry.get(key);
			System.out. println(key+"="+value);
		}
		//使用增强for遍历Set集合
		for(Map.Entry<String,Integer>  entry : set){
			//3.使用Entry对象中的方法getkey()和getValue()获取键与值
			String key = entry.getKey();
			Integer value = entry.get(key);
			System.out. println(key+"="+value);}
	HashMap存储自定义类型键值
		Map集合保证key是唯一的
			作为key的元素,必须重写hashCode()和equals()方式,以保证key唯一
	HashMap存储自定义类型键值
		key:String类型
			String类重写hashCode()和equals()方式,以保证key唯一
		value:Person类型
			value可以重复(同名同年龄视为同一个)
			//创建HashMap集合
			HashMap<String,Person> map = new HashMap<>();
			//往集合中添加元素
			map.put("北京",new Person("张三",18);
			map.put("上海",new Person("李四",20);
			map.put("北京",new Person("张三",18);
			Set<String> set = map.keySet();
			for(String key : set){
				Person value = map.get(key);
				System.out.println(key+"-->"+value);
			}
			
	HashMap存储自定义类型键值
		key:Person类型
			Person类重写hashCode()和equals()方式,以保证key唯一
		value:String类型
			value可以重复
			//创建HashMap集合
			HashMap<Person,String> map = new HashMap<>();
			//往集合中添加元素
			map.put(new Person("张三",18),"北京");
			map.put(new Person("李四",20),"上海");
			map.put(new Person("张三",18),"北京");
			Set<Map.Entry<Person,String>> set = map.entrySet();
			for(Map.Entry<Person,String> entry : set){
				Person key = entry.getKey();
				String value = entry.getValue();
				System.out.println(key+"-->"+value);
			}

java.util.Hashtable<K,V>集合

java.util.Hashtable<K,V>集合 implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
	HashMap集合(之前学的所有的集合):可以存储null値, null键
	Hashtable集合,不能存储null値, null键
		Hashtable和vector集合一祥, 在jdk1.2版本之后被更先进的集合(HashMap, Arraylist)取代了
		Hashtable的子类Properties依然活跃在更先进集合Properties集合是一个唯一和IO流相结合的集合
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值