Java :Map.Entry与entrySet应用
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java :Map.Entry与entrySet应用相关的知识,希望对你有一定的参考价值。
文章目录
entrySet
entrySet() 方法的语法为:
hashmap.entrySet()
注:hashmap 是 HashMap 类的一个对象。
返回值
返回此映射中包含的映射的 Set 视图。
注意:Set 视图意思是 HashMap 中所有的键值对都被看作是一个 set 集合。
例如:[1=Google, 2=Runoob, 3=Taobao]
,这个集合有多个键值对组成,每个键值对可以看做是一个set集合元素,合起来就是一个Set 视图。
以下实例演示了 entrySet() 方法的使用:
entrySet实例
import java.util.HashMap;
class Main
public static void main(String[] args)
// 创建一个 HashMap
HashMap<Integer, String> sites = new HashMap<>();
// 往 HashMap 添加一些元素
sites.put(1, "Google");
sites.put(2, "Runoob");
sites.put(3, "Taobao");
System.out.println("sites HashMap: " + sites);
// 返回映射关系中 set view
System.out.println("Set View: " + sites.entrySet());
执行以上程序输出结果为:
sites HashMap: 1=Google, 2=Runoob, 3=Taobao
Set View: [1=Google, 2=Runoob, 3=Taobao]
entrySet() 方法可以与 for-each 循环一起使用,可以用来遍历迭代 HashMap 中每一个映射项。
HashMap遍历
import java.util.HashMap;
import java.util.Map.Entry;
class Main
public static void main(String[] args)
// 创建一个HashMap
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// 访问 HashMap 中的每一个映射项
System.out.print("Entries: ");
// entrySet()返回了 HashMap 中所有映射项的一个 set 集合视图
// for-each loop 在该视图中访问了每一映射项*
for (Map.Entry<String, Integer> entry : numbers.entrySet())
System.out.print(entry);
System.out.print(", ");
执行以上程序输出结果为:
HashMap: One=1, Two=2, Three=3
Entries: One=1, Two=2, Three=3,
Map.Entry
定义:Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。通过这个集合的迭代器,获得每一个条目(唯一获取方式)的键或值并对值进行更改。
Map.Entry方法
Map.Entry中的常用方法如下所示:
方法 | 说明 |
---|---|
Object getKey() | 返回条目的关键字 |
Object getValue() | 返回条目的值 |
Object setValue(Object value) | 将相关映像中的值改为value,并且返回旧值 |
Map.Entry的作用
Map.Entry是为了更方便的输出map键值对。一般情况下,要输出Map中的key 和 value 是先得到key的集合keySet(),然后再迭代(循环)由每个key得到每个value。values()方法是获取集合中的所有值,不包含键,没有对应关系。而Entry可以一次性获得这两个值。
常用的遍历Map的方法整理
public static void main(String[] args)
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,由于二次取值,效率会比第二种和第三种慢
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet())
System.out.println("key= "+ key + " and value= " + map.get(key));
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext())
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
//第三种:无法在for循环时实现remove等操作
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet())
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
//第四种:只能获取values,不能获取key
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values())
System.out.println("value= " + v);
运行效果如下:
Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象。而keySet中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet要比keySet快很多。
总结
应用:Map.Entry与entrySet通常结合使用进行HashMap的遍历。
Map.Entry中的常用方法如下所示:
方法 | 说明 |
---|---|
Object getKey() | 返回条目的关键字 |
Object getValue() | 返回条目的值 |
Object setValue(Object value) | 将相关映像中的值改为value,并且返回旧值 |
遍历HashMap代码:
for (Map.Entry<String, String> entry : map.entrySet())
String key = entry.getKey();
String value = entry.getValue();
System.out.println("key= " + key + " and value= " + value);
以上是关于Java :Map.Entry与entrySet应用的主要内容,如果未能解决你的问题,请参考以下文章
Java中Map的 entrySet() 详解以及用法(四种遍历map的方式)