• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    java map集合詳解

          Java是一門面標的目的對象編程說話,不僅接收了C++說話的各類長處,還摒棄了C++里難以理解的多擔當、指針等概念,是以Java說話具有功能壯大和簡單易用兩個特征。Java說話作為靜態面標的目的對象編程說話的代表,極好地實現了面標的目的對象理論,許可程序員以優雅的思維體例進行復雜的編程 。

          Java具有簡單性、面標的目的對象、分布式、健壯性、平安性、平臺自力與可移植性、多線程、動態性等特點  。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等  。

    東西/原料

    • 電腦
    • intellij IDEA

    第一步:java.util.Map常識概述

    1. 1

       Interface Map<K,V>

      所有已知實現類:

      AbstractMap , Attributes , AuthProvider , ConcurrentHashMap , ConcurrentSkipListMap , EnumMap , HashMap , Hashtable , IdentityHashMap , LinkedHashMap , PrinterStateReasons , Properties , Provider , RenderingHints , SimpleBindings , TabularDataSupport , TreeMap , UIDefaults , WeakHashMap

      這些 Map 類可歸為三種類型:

      1. 通用Map,用于在應用程序中辦理映射,凡是在 java.util 程序包中實現

      HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap

      2. 專用Map,凡是我們不必親自建立此類Map,而是經由過程某些其他類對其進行拜候

      java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults

      3. 一個用于幫忙我們實現本身的Map類的抽象類

      AbstractMap

    2. 2

      常用方式:

      clear()  從該地圖中刪除所有的映射(可選操作)。 

      map.put("key1", "value1");    添加一個元素

      map.putAll(Map<? extends K,? extends V> m)  添加一個Map調集

      map.get("key1")   按照key獲取value

      map.remove("key1");  按照key移除一個元素

      boolean containsKey(Object key)   判定一個key在當前調集中是否存在

      boolean containsValue(Object value)  判定一個value在當前調集中是否存在

      boolean isEmpty()   若是此地圖不包含鍵值映射,則返回 true 。也就是map沒有內容返回true

      int size()   返回該地圖中鍵值映射的數目 

      Set<K> keySet()  返回該地圖中包含的鍵的調集視圖

      Set<Map.Entry<K,V>> entrySet()  該地圖中包含的映射的調集視圖 。

      default V replace(K key,V value)  在指心猿意馬的鍵已經存在而且有與之相關的映射值時才會將指心猿意馬的鍵映射到指心猿意馬的值(新值),在指心猿意馬的鍵不存在時,方式會return回來一個null。

      replace(k,v,v)     第二的新增的Map replace方式在替代現存值方面有更窄的釋義規模。當那個方式(上一個replace方式)只是涵蓋指心猿意馬的鍵在映射中有肆意一個有用的值的替代處置,而這個“replace”方式接管一個額外的(第三個)參數,只有在指心猿意馬的鍵和值都匹配的環境下才會替代。

    3. 3

      常用方式的現實利用測試:

      1 代碼如下所示

      import java.util.*;


      public class Test {


      public static void main(String[] args) {

      // 初始化,10W次賦值

      Map<Integer, Integer> map = new HashMap<Integer, Integer>();

      for (int i = 0; i < 100000; i++)

      map.put(i, i);


      /** 加強for輪回,keySet迭代 */

      long start = System.currentTimeMillis();

      for (Integer key : map.keySet()) {

      map.get(key);

      }

      long end = System.currentTimeMillis();

      System.out.println("加強for輪回,keySet迭代 -> " + (end - start) + " ms");


      /** 加強for輪回,entrySet迭代 */

      start = System.currentTimeMillis();

      for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

      entry.getKey();

      entry.getValue();

      }

      end = System.currentTimeMillis();

      System.out.println("加強for輪回,entrySet迭代 -> " + (end - start) + " ms");


      /** 迭代器,keySet迭代 */

      start = System.currentTimeMillis();

      Iterator<Integer> iterator = map.keySet().iterator();

      Integer key;

      while (iterator.hasNext()) {

      key = iterator.next();

      map.get(key);

      }

      end = System.currentTimeMillis();

      System.out.println("迭代器,keySet迭代 -> " + (end - start) + " ms");


      /** 迭代器,entrySet迭代 */

      start = System.currentTimeMillis();

      Iterator<Map.Entry<Integer, Integer>> iterator1 = map.entrySet()

      .iterator();

      Map.Entry<Integer, Integer> entry;

      while (iterator1.hasNext()) {

      entry = iterator1.next();

      entry.getKey();

      entry.getValue();

      }

      end = System.currentTimeMillis();


      System.out.println("迭代器,entrySet迭代 -> " + (end - start) + " ms");

      }

      }

      1、加強for輪回利用便利,但機能較差,不適合處置超大量級的數據。

      2、迭代器的遍歷速度要比加強for輪回快良多,是加強for輪回的2倍擺布。

      3、利用entrySet遍歷的速度要比keySet快良多,是keySet的1.5倍擺布。

    第二步:java.util.Map實現類

    1. 1

      HashMap的根基道理

      2

    注重事項

    • jdk 1.8 intellij IDEA 2018.3
    • 發表于 2019-07-20 23:45
    • 閱讀 ( 703 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆