国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JAVA遍歷map的幾種實現方法代碼

2019-11-26 15:48:18
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

public static void main(String args[]) {
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("a", "A");
  map.put("b", "B");
  map.put("c", "C");
  // keySet遍歷
  Iterator<String> iterator = map.keySet().iterator();
  while (iterator.hasNext()) {
    String key = iterator.next();
    String value = (String) map.get(key);
    System.out.println(value);
  }
  for (String key : map.keySet()) {
    String value = (String) map.get(key);
    System.out.println(value);
  }
  // entrySet遍歷
  Iterator<Entry<String, Object>> iterator1 = map.entrySet().iterator();
  while (iterator1.hasNext()) {
    String value = (String) iterator1.next().getValue();
    System.out.println(value);
  }

  for (Entry<String, Object> entry : map.entrySet()) {
    String value = (String) entry.getValue();
    System.out.println(value);
  }
  //
  for (Object str : map.values()) {
    System.out.println(str);
  }
}

關于效率問題:

如果你使用HashMap

同時遍歷key和value時,keySet與entrySet方法的性能差異取決于key的具體情況,如復雜度(復雜對象)、離散度、沖突率等。換言之,取決于HashMap查找value的開銷。entrySet一次性取出所有key和value的操作是有性能開銷的,當這個損失小于HashMap查找value的開銷時,entrySet的性能優勢就會體現出來。例如上述對比測試中,當key是最簡單的數值字符串時,keySet可能反而會更高效,耗時比entrySet少10%。總體來說還是推薦使用entrySet。因為當key很簡單時,其性能或許會略低于keySet,但卻是可控的;而隨著key的復雜化,entrySet的優勢將會明顯體現出來。當然,我們可以根據實際情況進行選擇
只遍歷key時,keySet方法更為合適,因為entrySet將無用的value也給取出來了,浪費了性能和空間。在上述測試結果中,keySet比entrySet方法耗時少23%。
只遍歷value時,使用vlaues方法是最佳選擇,entrySet會略好于keySet方法。

如果你使用TreeMap

同時遍歷key和value時,與HashMap不同,entrySet的性能遠遠高于keySet。這是由TreeMap的查詢效率決定的,也就是說,TreeMap查找value的開銷較大,明顯高于entrySet一次性取出所有key和value的開銷。因此,遍歷TreeMap時強烈推薦使用entrySet方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟曲县| 常熟市| 周宁县| 汉源县| 乐清市| 新乡市| 城市| 广南县| 宣恩县| 张北县| 永嘉县| 漳平市| 新龙县| 昌江| 永年县| 三明市| 涿州市| 攀枝花市| 景东| 柏乡县| 天柱县| 合阳县| 资兴市| 兴国县| 延边| 南京市| 庐江县| 蓝田县| 常熟市| 苍山县| 襄樊市| 永川市| 湘潭市| 潮州市| 措美县| 通化县| 阳朔县| 盐亭县| 嵊泗县| 江川县| 大方县|