`
chaoyi
  • 浏览: 309693 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Map接口使用的注意事项

 
阅读更多

本章目标
掌握Map接口的输出操作
掌握Map接口中key类的定义标准

 

Map接口输出
对于Map接口来说,其本身是不能直接使用迭代(例如:Iterator、foreach)进行输出的,因为Map中的每个位置存放的是一对值(keyàvalue),而Iterator中每次只能找到一个值。所以,如果此时非要使用迭代进行输出的话,则必须按照以下的步骤完成(以Iterator输出方法为例):
——1、将Map的实例通过entrySet()方法变为Set接口对象;
——2、通过Set接口实例为Iterator实例化;
——3、通过Iterator迭代输出,每个内容都是Map.Entry的对象;
——4、通过Map.Entry进行key —> value的分离。

 

Map输出方式一:Iterator输出Map

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class IteratorDemo04 {
	public static void main(String[] args) {
		Map<String,String> map = null;//声明 Map 对象,指定泛型类型
		map = new HashMap<String, String>();//实例化 Map 对象
		map.put("baidu", "www.baidu.com");//增加内容
		map.put("聊程", "阅谁问君诵,水落清香浮");//增加内容
		map.put("name", "chaoyi");//增加内容
		Set<Map.Entry<String,String>> allSet =null;//声明一个 Set 集合,指定泛型
		allSet = map.entrySet();//将 Map 接口实例变为 Set 接口实例
		Iterator<Map.Entry<String,String>> iter = null;//声明 Iterator 对象
		iter = allSet.iterator();//实例化 Iterator 对象
		while(iter.hasNext()){
			Map.Entry<String,String> me = iter.next();//找到 Map.Entry 实例
			System.out.println(me.getKey()+"-->"+me.getValue());//输出 key 和 value
		}
	}
/* 结果:
 * baidu-->www.baidu.com
 * 聊程-->阅谁问君诵,水落清香浮
 * name-->chaoyi
 * */
}

 

Map输出方式二:foreach输出Map

import java.util.HashMap;
import java.util.Map;
public class ForeachDemo02 {
	public static void main(String[] args) {
		Map<String,String> map = null;//声明 Map 对象,指定泛型类型
		map = new HashMap<String, String>();//实例化 Map 对象
		map.put("baidu", "www.baidu.com");//增加内容
		map.put("聊程", "阅谁问君诵,水落清香浮");//增加内容
		map.put("name", "chaoyi");//增加内容
		for(Map.Entry<String,String> me:map.entrySet()){
			System.out.println(me.getKey()+"-->"+me.getValue());//输出 key 和 value
		}
	}
/* 结果:
 * baidu-->www.baidu.com
 * 聊程-->阅谁问君诵,水落清香浮
 * name-->chaoyi
 * */
}

 

注意事项二:直接使用非系统类作为key
如果要使用非系统类作为Map的key,则此类必须覆写Object类中的以下两个方法:
——hashCode()
——equals

import java.util.HashMap;
import java.util.Map;
class Person{//定义 Person 类
	private String name;//定义 name 属性
	private int age;//定义 age 属性
	public Person(String name, int age) {//通过构造方法为属性赋值
		this.name = name;//为 name 属性赋值
		this.age = age;//为 age 属性赋值
	}
	public boolean equals(Object obj){//覆写 equals() 方法
		if(this==obj){//判断地址是否相等
			return true;//返回 true 表示同一个对象
		}
		if(!(obj instanceof Person)){//传递进来的不是本类的对象
			return false;//返回 false 表示不同一个对象
		}
		Person p = (Person)obj;//进行向下转型
		if(this.name.equals(p.name)&&this.name==p.name){
			return true;//属性依次比较,相等返回 true
		}else{
			return false;//属性内容不相等,返回 false
		}
	}
	public int hashCode(){//覆写 hashCode() 方法
		return this.name.hashCode()*this.age;//计算公式
	}
	public String toString(){//覆写 toString() 方法
		return "姓名:"+this.name+";年龄:"+this.age;//返回信息
	}
}
public class HashMapDemo08 {
	public static void main(String[] args) {
		Map<Person,String> map = null;//实例化 Map 对象,指定泛型类型
		map = new HashMap<Person, String>();//实例化 Map 对象
		Person per = new Person("张三", 30);//实例化 Person 对象
		map.put(per, "Zhangsan");//增加内容
		System.out.println(map.get(per));//查找内容
		//和 System.out.println(map.get(per).toString()); 一样
	}
/* 结果:
 * 取出的内容是:阅谁问君诵,水落清香浮
 * */
}

 

 

 

 

分享到:
评论

相关推荐

    MapTest.java 此代码用以更深刻理解Map接口方法的功能,包括Map所有接口方法的使用

    此代码用以更加深刻理解Map接口方法的功能,里面的代码包括Map所有接口方法的使用,以及某些方法的使用时的注意事项

    Android 高效编程注意事项

    ### Android高效编程注意事项 在Android应用开发过程中,为了提高应用程序的性能和响应速度,开发者需要注意以下几点关于高效编程的关键知识点: #### 概述 对于资源受限的系统(如移动设备),有两个基本准则...

    接口实验前期注意事项1

    ### 接口实验前期注意事项详解 #### 一、版本与环境变量配置问题 在进行接口实验之前,确保软件工具及开发环境的版本正确至关重要。根据文档建议,**强烈推荐使用版本 2015.2**,这主要是因为该版本在实验过程中...

    java中map集合的用法

    Map的注意事项** - 键必须实现`hashCode()`和`equals()`方法,以确保正确地进行哈希计算和比较。 - 如果需要保持插入顺序,应使用LinkedHashMap;如果需要保持自然排序或自定义排序,应使用TreeMap。 - 当使用null...

    MapServer帮助文档

    4. **操作系统的注意事项**: - 在Windows和Unix/Linux系统下可能有所不同。 - 注意路径名、文件权限等问题。 5. **其他资源**: - MapServer官方网站上的文档。 - 社区论坛和邮件列表。 6. **第一节:静态...

    地图的简单使用(Map)

    4. **Java中的Map接口**: - `HashMap`:基于哈希表实现,允许null键和null值。 - `TreeMap`:基于红黑树实现,保持键的排序,适用于需要有序Map的场景。 - `LinkedHashMap`:基于哈希表,同时维护插入顺序或访问...

    JAVA注意事项

    在Java编程过程中,掌握一些关键的注意事项至关重要,这不仅能提高代码质量,还能避免常见的编程陷阱。以下是一些关于"JAVA注意事项"的详细说明: 1. **命名规范**:Java有严格的命名规则,类名应使用驼峰式命名,...

    Vector ASAP2Editor .map转.a2l 文件 附带使用说明

    7. 验证和使用:转换完成后,你可以阅读`readme.html`和`ReleaseNotes.html`文件,了解任何注意事项或更新信息。同时,`About.PNG`、`folder.png`等图片资源可能提供了关于软件的更多信息。`summary_en.txt`和`...

    java-遍历map

    ### 一、Java Map接口简介 `Map`接口是Java集合框架的一部分,它提供了存储和检索唯一键对象及其对应的值对象的方法。一个`Map`中不能包含重复的键:每个键最多只能映射到一个值。`Map`的主要实现类有`HashMap`、`...

    Hashmap实现了Map接口的底层实现.docx

    HashMap是Java编程语言中一种非常重要的数据结构,它实现了Map接口,允许存储键值对,且支持null键和null值。HashMap的底层实现基于数组和...理解HashMap的底层机制和使用注意事项,对于编写高性能的Java代码至关重要。

    google map应用实例

    五、离线地图的挑战与注意事项 1. 数据更新:离线地图的数据可能会过时,需要定期更新。 2. 法律问题:使用地图数据需遵守版权和使用条款,确保合法合规。 3. 性能优化:离线地图的加载速度和内存占用需要优化,以免...

    GoogleMap控件下载

    ### 注意事项 - 使用Google Maps API可能产生费用,超出免费额度后按使用量计费。 - 为了用户体验,应确保地图加载速度,合理使用缓存和异步加载策略。 - 遵守Google的使用政策,不要滥用API导致账号受限。 综上所...

    mapstruct-reference-guide.pdf

    4. **Java 9的使用**:MapStruct 1.4.0.CR1支持Java 9及以上版本,这部分可能包含关于在新平台上运行和构建映射器的注意事项和最佳实践。 5. **定义映射器**:这是MapStruct的核心部分,主要包括: - **基本映射**...

    S7-200 PLC 脉冲输出 MAP库文件的使用

    4. **注意事项** 使用S7-200 PLC的脉冲输出功能时,必须考虑到电机的电气特性、负载条件以及系统的机械限制。同时,为了保证系统的稳定性和安全性,应进行充分的测试和调试。 总之,S7-200 PLC的脉冲输出MAP库提供...

    C++相关面试题及面试注意事项

    如果面试涉及数据库编程,应了解如何使用ODBC或JDBC等接口进行数据库操作。 10. **面试技巧**:除了技术知识外,面试者还需要展示良好的沟通能力、问题解决能力和团队协作精神。了解如何清晰地表达思路,如何分析和...

    Garmin佳明GPSMAP 276Cx用户手册.pdf

    在【安全及产品信息须知】部分,用户会了解到使用设备时的基本安全注意事项,例如避免在极端天气条件下使用,防止设备接触水分,以及正确处理和存储电池,以确保设备的安全性和用户的个人安全。这部分还会强调阅读并...

    Golang 使用map需要注意的几个点

    【Golang 使用map需要注意的几个点】 在Golang中,`map`是一种...通过理解这些注意事项,我们可以更安全、有效地使用Golang中的`map`,避免潜在的问题并优化程序性能。在编写涉及`map`的代码时,务必牢记这些要点。

    java集合map取key使用示例 java遍历map

    4. **注意事项** - 当遍历Map时,修改Map(如添加、删除键值对)可能会导致迭代器抛出`ConcurrentModificationException`。为避免这种情况,可以使用`Iterator.remove()`方法删除元素,或者在遍历前复制Map(如使用...

    mapapi.bundle

    五、注意事项 1. 文件版本:确保mapapi.bundle与使用的地图API版本兼容,不同版本的bundle可能不适用于所有API。 2. 权限问题:在AndroidManifest.xml或相应的iOS配置文件中添加位置服务所需的权限。 3. 性能优化:...

Global site tag (gtag.js) - Google Analytics