HashMap的使用方法及注意事项
99、Map(映射):Map 的keySet()方法会返回 key 的集合,因为 Map 的键是不能重复的,因此 keySet()方法的返回类型是 Set;而 Map 的值是可以重复的,因此 values()方法的返回类型是 Collection,可以容纳重复的元素。
100、Map注意事项:
A)
public class TestMap { publicstatic void main(String[] args) { HashMap map = new HashMap(); map.put("a","zhangsan"); map.put("b","lisi"); map.put("c","wangwu"); map.put("a","cuijun"); //System.out.println(map); String value = (String)map.get("a"); System.out.println(value); System.out.println("---------------------"); Stringvalue1 = (String)map.get("d"); System.out.println(value1); } }
由上述代码可知键不可以重复。
B)
public classTestMap1 { publicstatic void main(String[] args) { HashMap map = new HashMap(); String str = newString("cuijun"); map.put("a",str); map.put("b",str); //map.put("a", "cuijun"); //map.put("b", "cuijun"); System.out.println(map); } }
由上述代码可知值可以重复。
注:因此 keySet()方法的返回类型是 Set,values()方法的返回类型是 Collection。
101、关于HashSet的使用:
A)
public class TestMap2 { publicstatic void main(String[] args) { HashMap map = new HashMap(); map.put("a","aa"); map.put("b","bb"); map.put("c","cc"); map.put("d","dd"); Set keys = map.keySet();//使用keySet()方法,获取键的集合 for(Iterator it =keys.iterator(); it.hasNext();){ String key = (String)it.next(); String value = (String)map.get(key); System.out.println(key+"="+value); } } }
b)
publicclass TestMap3 { publicstatic void main(String[] args) { HashMap map = new HashMap(); map.put("a","aa"); map.put("b","bb"); map.put("c","cc"); map.put("d","dd"); Set keys = map.entrySet();//使用entrySet()方法,获取entry对象的集合 for(Iterator it =keys.iterator(); it.hasNext();){ Map.Entry maps = (Map.Entry)it.next();//Map.Entry:Entry是Map的一个内部类。具体详情请参考API。 /* * 关于内部类的简单介绍:内部类是定义在类内部的类 * public class A{ * publicclass B{} * } * A a = new A(); * A.B b = new A.B(); */ String key = (String)maps.getKey(); String value = (String)maps.getValue(); System.out.println(key+":"+value); } } }
附Map.Entry的API简介:
Map.entrySet方法返回映射的 collection视图,其中的元素属于此类。获得映射项引用的唯一方法是通过此 collection视图的迭代器来实现。这些Map.Entry对象仅在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过setValue在映射项上执行操作之外。
C)通过使用HashSet判断输入值的个数
publicclassTestMap4 { publicstatic void main(String[] args) { HashMap map = new HashMap(); for(int i = 0; i < args.length; i++){ if(map.get(args[i]) ==null){ map.put(args[i],newInteger(1)); }else{ Integer value = (Integer)map.get(args[i]); value = new Integer(value.intValue()+1); map.put(args[i],value); } } Set keys = map.keySet(); for(Iterator it =keys.iterator(); it.hasNext();){ String key = (String)it.next(); Integer value = (Integer)map.get(key); System.out.println(key+"="+value); } } }
=====================关于HashSet其实运行下这些代码,参考着API是很容易理解的=============
HashMap的使用方法及注意事项的更多相关文章
- Linux任务调度进程crontab的使用方法和注意事项
参考文章:Linux任务调度进程crond命令的使用方法和注意事项 一.crond简介 概念 crond的概念和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系 ...
- hashMap的get()方法,错用并发造成cpu和负载高
一次线上问题的解决 线上发现服务cpu使用达到98%,负载高达200多,64核心cpu,下面介绍解决过程: 1.top命令查出占用cpu高的进程pid 2.使用jstack -l pid >du ...
- Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
Swift中的分类 1.创建一个空的swift文件 2.关键字extension,格式: extension 要扩展的类名 {} extension UIButton { } Swift中扩展init ...
- C++ 开发OCX 的方法和注意事项
C++ 开发OCX 的方法和注意事项 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件.ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精 ...
- Java基础:HashMap中putAll方法的疑惑
最近回顾了下HashMap的源码(JDK1.7),当读到putAll方法时,发现了之前写的TODO标记,当时由于时间匆忙没来得及深究,现在回顾到了就再仔细思考了下 @Override public v ...
- java字符流操作flush()方法及其注意事项
java字符流操作flush()方法及其注意事项 flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...
- jdk1.8 HashMap的keySet方法详解
我在看HashMap源码的时候有一个问题让我产生了兴趣,那就是HashMap的keySet方法,没有调用HashMap的有关数据的任何方法就能获取到map的所有的键,他是怎么做到的,然后我就通过模拟k ...
- Java编程中获取键盘输入实现方法及注意事项
Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...
- HashMap的put方法返回值问题
API文档中的描述: 先看一个例子 Map<Character, Integer> map = new HashMap<Character, Integer>(); Syste ...
随机推荐
- 正确的安装qwtplot3D开发库
1.从网上下载qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/ 2.解压qwtplot3d-0.2.7.zip到C盘根目录下(注意:路径中不能带有中文汉 ...
- oracle数据库常用查询一
oracle数据库常用查询一 sqlplus / as sysdba; 或sqlplus sys/密码 as sysdba;两者都是以sys登录.conn scott/tiger@orcl; conn ...
- CentOS 6.8编译安装httpd2.2.31+MySQL5.6.31+PHP5.3.27
CentOS 6.8编译安装httpd2.2.31+MySQL5.6.31+PHP5.3.27 说明: 操作系统:CentOS 6.8 32位 准备篇: 一.系统约定 软件源代码包存放位 ...
- T4文本模板
<#...#> 可以包含语句 <#=...#> 用于表达式,提供“输出”操作 <#+ ...> 使用类功能控制块向文本模板添加方法.属性.字段,必须作为文件中最后 ...
- windows程序消息机制(Winform界面更新有关)--转
1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...
- myeclipse10.7破解成功 但 无法打war包 securecrt alert:integrity check error 解决方案
本次对于myeclipse10破解后,导出war包时报“SECURITY ALERT: INTEGERITY CHECK ERROR”进行了破解 只要执行完第一步的破解后,将com.genuitec. ...
- Django初学笔记1.
1,安装python 和 Django , 参考网上教程(安装python,配置path, 安装django,配置path..) 2,查看django安装版本:cmd-->python--> ...
- mysql索引之组合索引
多列索引又称组合索引,在mysql的查询操作中,我们经常会遇到多个搜索条件,如:$sql = "select * from article where content='ma4' and t ...
- 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件
nutch-site.xml 在nutch2.2.1中,有两份配置文件:nutch-default.xml与nutch-site.xml. 其中前者是nutch自带的默认属性,一般情况下不要修改. 如 ...
- ecstore后台规格超过一定数量保存丢失
问题描述: 后台规格超过一定数量保存丢失,规格新增不了,删除出问题等不正常情况. 解决方法: 经过波波的不懈努力和日夜冥想终于破了.分析其原因就是因为多个规格组合生成的表单域太多,与php.ini配置 ...