keySet()、entrySet()和Map.Entry用法

2019-11-16  本文已影响0人  盘丝仙仙

2019-11-16

package com.lixing.jihe13;

import java.util.*;

/**

* @author: ZH

* @date: 2019/10/25 10:45

* @description: Map对象中的keySet()、entrySet()和Map.Entry用法

*/

public class MapEntryTest {

public static void main1(String[] args) {

//keySet():返回的是map对象的key值的set集合

        Map map =new HashMap<>();

        map.put(1, "aa");

        map.put(2, "bb");

        //1.先获取map集合的key的set集合

        Set keySet = map.keySet();

        //2.根据set集合,获取其迭代器

        Iterator iterator = keySet.iterator();

        while (iterator.hasNext()) {

//3.获取key

            Integer key = iterator.next();

            //4.根据key得到value

            System.out.println("key=" + key +" value=" + map.get(key));

        }

//output

//key=1 value=aa

//key=2 value=bb

    }

public static void main2(String[] args) {

//entrySet()返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的。

        Map map =new HashMap<>();

        map.put(1, "aa");

        map.put(2, "bb");

        //1.先获取map集合的entrySet

//  Set>这个写法好复杂

//entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry

        Set> entrySet = map.entrySet();

        //2.根据set集合,获取其迭代器

//照抄上面Map.Entry复杂写法

        Iterator> iterator = entrySet.iterator();

        while (iterator.hasNext()) {

//3.获取迭代器

//Map.Entry

            Map.Entry map1 = iterator.next();

            //4.根据迭代器直接得到key value

            System.out.println("key=" + map1.getKey() +" value=" + map1.getValue());

        }

//output

//key=1 value=aa

//key=2 value=bb

//ZH总结

//虽然使用keySet及entrySet来进行遍历能取得相同的结果,但两者的遍历速度是有差别的。

//  keySet():迭代后只能通过get()取key;再根据key值取value。

//  entrySet():迭代后可以e.getKey(),e.getValue()同时取key和value。

//

//同时,keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好

//为了提高性能,以后多考虑用entrySet()方式来进行遍历。

    }

public static void main3(String[] args) {

//values()只能得到values 得不到key

        Map map =new HashMap<>();

        map.put(1, "aa");

        map.put(2, "bb");

        Collection values = map.values();

        Iterator iterator = values.iterator();

        while (iterator.hasNext()) {

String value = iterator.next();

            System.out.println(" value=" + value);

        }

//output

// value=aa

// value=bb

    }

public static void main(String[] args) {

//看看下面代码能否很顺眼

        Map>TOKEN_MAP=new HashMap(1);

        Map map =new HashMap(1);

        boolean flag =true;

        Long nowTime = System.currentTimeMillis() /1000L;

        Set> entrySet =new HashSet();

        if (TOKEN_MAP.get("tokenType") !=null) {

entrySet = ((Map) TOKEN_MAP.get("tokenType")).entrySet();

        }

if (((Set) entrySet).isEmpty()) {

flag =false;

        }

if (!flag) {

map.put(System.currentTimeMillis() /1000L, "token1");

            TOKEN_MAP.put("tokenType", map);

        }else {

Iterator> iterator = ((Set) entrySet).iterator();

            if (iterator.hasNext()) {

Map.Entry entry = (Map.Entry) iterator.next();

                Long oldTime = (Long) entry.getKey();

                Long diff = nowTime - oldTime;

                //if (diff < (long)MINUTE) {

                if (diff >3) {

TOKEN_MAP.remove("tokenType");

                    map.put(System.currentTimeMillis() /1000L, "token2");

                    TOKEN_MAP.put("tokenType", map);

                }

}

}

}

}

上一篇下一篇

猜你喜欢

热点阅读