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 ...
随机推荐
- Dynamics CRM 2016 使用Plug-in Trace Log调试插件
1.写插件 首先,让我们写一个简单的插件来测试新插件跟踪日志功能.请注意,在下面的示例代码中,我们增加ITracingService的一个实例,以及记录有关插件的执行信息记录的一些键值: 2.注册插件 ...
- asp.net服务器向客户端弹出对话框,但不使页面边白板
1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; 5: ...
- (转)修改IIS默认的localhost名称
看惯了http://localhost在本地测试的域名,想换种写法行不行,比如说想变成http://www.ceo.com,但网页访问仍然是原来http://localhost的内容,如何做到呢? 可 ...
- How to resolve the SQL error “cannot connect to WMI provider”
当你试图打开SQL Server Configuation Manager时发现如下错误: “cannot connect to WMI provider. You do not have permi ...
- Arcgis Engine - 脱离ToolBarControl控件的命令和工具
可以手动实现脱离ToolBarControl控件的命令和工具 //打开文件. private void file_tsmItem_Click(object sender, EventArgs e) { ...
- C# 操作NPOI导入导出
//把T_Seats中的输入导出到Excel private void button3_Click(object sender, EventArgs e) { //1.读取 string sql = ...
- AngularJS的$http服务的应用
$http有很多参数和调用方法,本文只记录比较常用的应用及参数. $http 服务:只是简单封装了浏览器原生的XMLHttpRequest对象,接收一个参数,这个参数是一个对象,包含了用来生成HTTP ...
- C# 数据实现设计模式
一个人没事,写了一个底层数据实现读取设计模式,个人觉得还是蛮好扩展,里面有不足的地方希望大家给予指导.话不多说先看个图吧!图可能不正规,伤害了你的眼睛见谅.有图有真相 其实这个设计模式,就是一个简单的 ...
- 关于Windows8.1更新后Sql Server服务消失的处理办法
前言 微软在17日发布了windows8.1,兴致勃勃地花了半天的时间更新了,不过不知所云的是,在20日又被卸下Windows Store.此为背景. 影响 更新完毕做开发的时候,发现SqlServe ...
- POJ1636 动态规划+并查集
POJ1636 问题重述: 两个监狱中各有m个囚犯,欲对这两个监狱中的囚犯进行等数量的交换.已知某些囚犯不能关押在同一个监狱,求解可以交换人数的最大值k (k < m/2). 分析: 假设监狱1 ...