一、HashMap概述;

1.HashMap是一个散列表,它存储的是键值对(key-value)映射;

2.HashMap继承AbstractMap,实现了Map,Cloneable,Serializable接口;

3.HashMap的实现不是同步的,线程不安全,但是效率高;

4.HashMap允许null键和null值,是基于哈希表的Map接口实现;

5.哈希表的作用是用来保证键的唯一性;

6.HashMap的实例有两个参数影响其性能:初试容量和加载因子,当哈希表中的条目数超出加载因子与当前容量的乘积时,要对哈希表进行rehash操作(即重建内部数据结构),容量扩大约为之前的两倍,加载因子默认值为0.75;

二、HashMap的三种遍历方式;

第一种:遍历HashMap的entrySet键值对集合

1.通过HashMap.entrySet()得到键值对集合;

2.通过迭代器Iterator遍历键值对集合得到key值和value值;

package com.xyfer;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; public class HashMapTest { public static void main(String[] args) {
// 创建一个key和value均为String的Map集合
Map<String, String> map = new HashMap<String, String>();
map.put("1", "11");
map.put("2", "22");
map.put("3", "33");
// 键和值
String key = null;
String value = null;
// 获取键值对的迭代器
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
key = (String) entry.getKey();
value = (String) entry.getValue();
System.out.println("key:" + key + "---" + "value:" + value);
} } }

控制台打印结果:

第二种:遍历HashMap键的Set集合获取值;

1.通过HashMap.keySet()获得键的Set集合;

2.遍历键的Set集合获取值;

package com.xyfer;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; public class HashMapTest { public static void main(String[] args) {
// 创建一个key和value均为String的Map集合
Map<String, String> map = new HashMap<String, String>();
map.put("1", "11");
map.put("2", "22");
map.put("3", "33");
// 键和值
String key = null;
String value = null;
// 获取键集合的迭代器
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
key = (String) it.next();
value = (String) map.get(key);
System.out.println("key:" + key + "---" + "value:" + value);
} } }

控制台打印结果:

第三种:遍历HashMap“值”的集合;

1.通过HashMap.values()得到“值”的集合

2.遍历“值”的集合;

package com.xyfer;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; public class HashMapTest { public static void main(String[] args) {
// 创建一个key和value均为String的Map集合
Map<String, String> map = new HashMap<String, String>();
map.put("1", "11");
map.put("2", "22");
map.put("3", "33");
// 值
String value = null;
// 获取值集合的迭代器
Iterator it = map.values().iterator();
while (it.hasNext()) {
value = (String) it.next();
System.out.println("value:" + value);
}
}
}

控制台打印结果:

HashMap概述及其三种遍历方式的更多相关文章

  1. 二叉树及其三种遍历方式的实现(基于Java)

    二叉树概念: 二叉树是每个节点的度均不超过2的有序树,因此二叉树中每个节点的孩子只能是0,1或者2个,并且每个孩子都有左右之分. 位于左边的孩子称为左孩子,位于右边的孩子成为右孩子:以左孩子为根节点的 ...

  2. HashMap的两种遍历方式

    HashMap的两种遍历方式 HashMap存储的是键值对:key-value . java将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了Hash ...

  3. HashMap 中7种遍历方式的性能分析

    随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...

  4. HashMap 的 7 种遍历方式与性能分析

    前言 随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从 ...

  5. Map三种遍历方式

    Map三种遍历方式 package decorator; import java.util.Collection; import java.util.HashMap; import java.util ...

  6. Map 的四种遍历方式

    Map 的四种遍历方式 import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ...

  7. Map集合的几种遍历方式

    Map<String ,String> map=new HashMap<String,String>(); map.put("1","value1 ...

  8. Map的两种遍历方式

    ********************************************************************************* ****************** ...

  9. iOS开发中数组常用的五种遍历方式

    随着iOS的不断发展,apple也不断推出性能更高的数组遍历方式,下面将对熟悉的五种遍历方式进行列举. 首先定义一个数组,并获取数组长度 NSArray *array=@[",]; NSIn ...

随机推荐

  1. 如何使用socket进行java网络编程(四)

    在上一篇的结尾,提到过用来处理每一个服务端accept到的socket,我们由原来最开始的单线程改成了多线程去处理,但是对每一个接收到的socket都new一个thread去处理,这样效率太低,我们需 ...

  2. win10中shift+右键,在此处打开cmd窗口

    通过添加注册表项,实现右击“在此处打开命令行功能” 注册表位置:HKEY_CLASSES_ROOT\Directory\Background\shell\ win10系统用标识右键菜单打开命令行的键, ...

  3. KeyChainWrapper - keychain简单使用

    1 keyChainWrapper是MRC代码,要禁用ARC -fno-objc-arc 2 要导入Security.framework框架 3 获得一个不变的UUID - (BOOL)applica ...

  4. Python os.walk() 遍历出当前目录下的文件夹和文件

    os.walk目录遍历 os.walk的参数如下: os.walk(top, topdown=True, onerror=None, followlinks=False) 其中: - top是要遍历的 ...

  5. centos6安装最新syslog-ng推送hdfs

    可参考以下网址: installhttps://www.syslog-ng.com/community/b/blog/posts/latest-syslog-ng-available-rhel-6-c ...

  6. JAVA并发编程学习笔记------多线程调优

    1. 多线程场景下尽量使用并发容器代替同步容器 (如ConcurrentHashMap代替同步且基于散列的Map, 遍历操作为主要操作的情况下用CopyOnWriteArrayList代替同步的Lis ...

  7. 《JAVA与模式》之适配器模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...

  8. centos7修改默认运行级别的变化

    在学习centos7,视频教学中使用的的centos6,查看权限文件命令为 cat /etc/inittab/ 但是在centos7中输入以下命令会出现这种情况 这个已经不用了,现在修改权限的命令修改 ...

  9. Java堆内存溢出模拟

    先了解一下Java堆: 关于Java内存区域的分配,可以查看Java运行时数据区域一篇文章. Java堆是虚拟机内存管理中最大的一块区域,该区域是线程共享的,某Java进程中所有的线程都可以访问该区域 ...

  10. Java并发编程实践读书笔记(3)任务执行

    类似于Web服务器这种多任务情况时,不可能只用一个线程来对外提供服务.这样效率和吞吐量都太低. 但是也不能来一个请求就创建一个线程,因为创建线程的成本很高,系统能创建的线程数量是有限的. 于是Exec ...