map集合的keySet和entrySet

Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 set 视图。

Set<K> keySet() 返回此映射中包含的键的 set 视图。

举例说明

import java.util.*;
import java.util.Map.Entry;
public class Demo {  

    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<Integer,String>();
        map.put(1, "一");
        map.put(2, "二");
        map.put(3, "三");
        map.put(4, "四");
        map.put(5, "五");

        /**
         * 方法1keySet
         */
        Set<Integer> keySet = map.keySet();
        Iterator<Integer> iterator = keySet.iterator();
        while (iterator.hasNext() ){
            Integer key = iterator.next();
            String value = map.get(key);
            System.out.println("1.0"+key+"------"+value);
        }
        for (Iterator<Integer> it = keySet.iterator(); it.hasNext(); ) {
            Integer key = it.next();
            String value = map.get(key);
            System.out.println("1.1"+key+"------"+value);
        }
        for (Integer key : keySet) {
            String value = map.get(key);
            System.out.println("1.2"+key+"------"+value);
        }
        /**
         * 方法2entrySet
         */
        Set<Entry<Integer, String>> entrySet = map.entrySet();
        Iterator<Entry<Integer, String>> aiterator = entrySet.iterator();
        while (aiterator.hasNext()) {
            Entry<Integer, String> entry = aiterator.next();
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("2.0"+key+"------"+value);
        }
        for (Iterator<Entry<Integer, String>> it = entrySet.iterator(); it.hasNext(); ) {
            Entry<Integer, String> entry = it.next();
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("2.1"+key+"------"+value);
        }
        for (Entry<Integer, String> entry : entrySet) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("2.2"+key+"------"+value);
        }
    }
}  

keySet和entrySet的区别
keySet()的速度比entrySet()慢了很多,因为对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了

for循环和while循环对比
1.for循环比for循环节约内存空间,因为迭代器在for循环中,循环结束,迭代器属于局部变量,循环结束就消失了,while循环中迭代器对象虽然也是局部变量但是要等方法运行完毕才能在内存中消失
2.当循环次数比较多时,while循环理论上要比for循环要高效,因为for循环比for多一条汇编语句

原文地址:http://blog.51cto.com/13579086/2070589

时间: 2024-11-02 23:21:34

map集合的keySet和entrySet的相关文章

map对象中keyset()和entryset()区别

Set<K> keySet() //返回值是个只存放key值的Set集合(集合中无序存放的) Set<Map.Entry<K,V>> entrySet() //返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的. 下面通过例子看看: 一. keySet()方式. Map<String,String> map = new HashMap<String,String&g

Map容器中keySet()、entrySet()

1.定义 keySet(): 返回的是只存放key值的Set集合,使用迭代器方式遍历该Set集合,在迭代器中再使用get方法获取每一个键对应的值.使用get方法获取键对应的值时就需要遍历Map集合,主要的差异就在此处. entrySet(): 返回的是存放了映射关系的Set集合(一个映射关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的.然后使用迭代器方式遍历该Set集合就可以取出Map中存放的键值对. 原文地址:https://www.cnblog

Map集合重要练习

重要练习:将字符串中的字母按如下格式显示: a(1)b(2)...... 代码及思路如下: /* 获取字符串中字母的次数,并打印出如下格式a(1)b(2)c(3)...... 思路: 先定义一个方法,将该功能进行封装. 1.首先将字符串转换成字符数组 方法是toCharArray(); 2.定义一个map容器用来接收每个字符, 因为结果是有序的可以使用TreeMap 3.遍历字符数组 for循环. 将字母作为 键 去map集合中去查询该字母,如果返回null,说明map集合中没有该字母,那么将该

java学习笔记—集合之Map集合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p4 { margin: 0.0px 0.0px 0.0px 0.0

Map集合&amp;&amp;异常处理&amp;&amp;file类

Map集合 *定义: *集合定义方法: Map<键名,键值> 变量名=new Map的子类<键名,键值>():   键名不能重复 Map<String,Integer> map=new HashMap<String,Integer>(); *迭代: 例:对Map集合进行添加并将其进行迭代输出 第一种方法: entrySet()   将map集合中键名和键值之间的映射关系进行封装 第二种方法: map集合中 keySet()    获取键名         

HashMap中的keySet()和entrySet()

1.基本概述 Set<Map.Entry<K,V>> entrySet()  返回此映射中包含的映射关系的 set 视图. Set<K>              keySet()      返回此映射中包含的键的 set 视图. 2.效率分析 对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value.而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了. 3.使用实例 pa

有序取出Map集合的元素(自写无喷)

最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法.. 1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合 2,定义一个新的TreeSet集合(TreeSet集合有自动排序功能) 3,将第一步得到的Set集合遍历赋给TreeSet集合,这样所有key都排好序并保存在TreeSet里面 4,然后通过TreeSet的迭代器遍历,并同时根据迭代器返回的key,一个一个取出map里面的value --------

map集合中value()、keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet():将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键,再根据get方法.获取每一个键对应的值. keySet():迭代后只能通过get()取key entrySet(): Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图. Map.Entry表示映射关系.entrySet():迭

Map集合的两种取出方式(keySet、entrySet)

/* * map集合的两种 取出方式:(map没有迭代器方法) *     1.Set<k> keySet:将map中的所有的键存入到Set集合,因为Set具备 迭代器. *         所以可以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值. *         Map集合的取出原理:将map集合转成set集合,再通过迭代器取出 *     2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中, *