遍历Map的几种方式以及性能小结
生活随笔
收集整理的這篇文章主要介紹了
遍历Map的几种方式以及性能小结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 說明
- 第一種方式:遍歷Map的entry的方式
- 第二種方式:使用迭代器遍歷Map的entry的方式
- 第三種方式:遍歷Map的key值的方式
- 第四種方式:使用迭代器的遍歷key方式
- 測試代碼
- 性能測試以及結果
說明
平時都會用到Map的遍歷,索性一次總結一下,省的以后再查來查去了。
第一種方式:遍歷Map的entry的方式
/*** 第一種方式:遍歷Map的entry的方式** @param inputMap*/public static void fun1(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun1---開始------");if (inputMap == null || inputMap.isEmpty()) {return;}for (Map.Entry<String, Object> entry : inputMap.entrySet()) {String key = entry.getKey();Object value = entry.getValue();System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}第二種方式:使用迭代器遍歷Map的entry的方式
/*** 第二種方式:使用迭代器遍歷Map的entry的方式** @param inputMap*/public static void fun2(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun2---開始------");if (inputMap == null || inputMap.isEmpty()) {return;}Iterator entrys = (Iterator) inputMap.entrySet().iterator();while (entrys.hasNext()) {Map.Entry<String, Object> entry = (Map.Entry) entrys.next();String key = entry.getKey();Object value = entry.getValue();System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}第三種方式:遍歷Map的key值的方式
/*** 第三種方式:遍歷Map的key值的方式** @param inputMap*/public static void fun3(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun3---開始------");if (inputMap == null || inputMap.isEmpty()) {return;}Set<String> keys = inputMap.keySet();for (String key : keys) {Object value = inputMap.get(key);System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}第四種方式:使用迭代器的遍歷key方式
/*** 第四種方式:使用迭代器的遍歷key方式** @param inputMap*/public static void fun4(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun4---開始------");if (inputMap == null || inputMap.isEmpty()) {return;}Iterator<String> keys = inputMap.keySet().iterator();while (keys.hasNext()) {String key = keys.next();Object value = inputMap.get(key);System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (inputMap.get(key) == null ? null : inputMap.get(key).toString()));}}測試代碼
測試代碼:
public static void main(String[] args) {Map<String, Object> inputMap = new HashMap<>();inputMap.put("name", "張三");inputMap.put("age", "28");inputMap.put("gender", "男");inputMap.put("hobby", "beautiful girl");fun1(inputMap);fun2(inputMap);fun3(inputMap);fun4(inputMap);}日志:
[2020-03-02 23:32:26.392] -----------fun1---開始------ [2020-03-02 23:32:26.394] [gender]=男 [2020-03-02 23:32:26.394] [name]=張三 [2020-03-02 23:32:26.395] [age]=28 [2020-03-02 23:32:26.396] [hobby]=beautiful girl [2020-03-02 23:32:26.396] -----------fun2---開始------ [2020-03-02 23:32:26.396] [gender]=男 [2020-03-02 23:32:26.397] [name]=張三 [2020-03-02 23:32:26.397] [age]=28 [2020-03-02 23:32:26.397] [hobby]=beautiful girl [2020-03-02 23:32:26.403] -----------fun3---開始------ [2020-03-02 23:32:26.404] [gender]=男 [2020-03-02 23:32:26.404] [name]=張三 [2020-03-02 23:32:26.406] [age]=28 [2020-03-02 23:32:26.407] [hobby]=beautiful girl [2020-03-02 23:32:26.407] -----------fun4---開始------ [2020-03-02 23:32:26.409] [gender]=男 [2020-03-02 23:32:26.409] [name]=張三 [2020-03-02 23:32:26.410] [age]=28 [2020-03-02 23:32:26.410] [hobby]=beautiful girl性能測試以及結果
以上幾種方式都可以實現Map的遍歷,但是哪一種的效率高呢?簡單測試一下,以事實說話。
測試代碼如下:
測試結果:
[2020-03-03 00:06:48.909] fun1耗時:208ms [2020-03-03 00:06:48.997] fun2耗時:86ms [2020-03-03 00:06:49.263] fun3耗時:266ms [2020-03-03 00:06:49.446] fun4耗時:183ms總結
以上是生活随笔為你收集整理的遍历Map的几种方式以及性能小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跨年过程中因日期格式化引发的生产故障:格
- 下一篇: 什么是反射?反射的用法?实例说明。