1. 程式人生 > >集合Map函式常用方法以及遍歷

集合Map函式常用方法以及遍歷

Map的資料儲存方式

  • map<K,V>

map基本方法使用

新增資料

  • put(k,v>

  • putall(Map map)

刪除

  • remove 移除一個鍵的對映關係

  • clear 移除所有的對映

查詢

  • containsKey(Object key):查詢該key值是否存在

  • containsValue(Object value) :查詢該value值是否存在

比較

  • equal和hashCode

其他功能:

  • entrySet():返回set對映關係檢視

  • keySet():返回包含鍵的set檢視

  • size():返回關係數

  • values():返回包含值的Collection檢視

  • get(Object key):獲取指定鍵的值

遍歷Map物件的四種方式:

  1. 通過entrySet獲得set物件結果集,然後遍歷結果集,每個物件是一個Map,然後getKey和getValues

    Set<Map.Entry<Object, Object>> setlist =map.entrySet();
              for (Map.Entry<Object, Object> setone : setlist) {
                  System.out.println(setone.getKey()+":"+setone.getValue());
              }

    優點:普遍,可以同時獲得鍵和值

    缺點:效率並不是很高

  2. 通過keySet()方法得到key的set結果集,遍歷得到Key值;通過values()方法的values結果集,比例得到key值

     Set<Object> keyset = map.keySet();
              for (Object o : keyset) {
                  System.out.println("key"+o);
              }
              Collection<Object> values = map.values();
              for (Object value : values) {
                  System.out.println("值是"+value);
              }

    優點:效率高

    缺點:要分別得到key與value

  3. 通過entrySet得到set物件結果 集,然後用遍歷器iterator遍歷得到結果集

    Iterator<Map.Entry<Object, Object>> iterator = map.entrySet().iterator();
              while (iterator.hasNext()){
                  Map.Entry<Object,Object> entry=iterator.next();
                  System.out.println(entry.getKey()+":"+ entry.getValue());
              }

    優點:適應老版本,遍歷時呼叫iterator.remove()來刪除entries

    缺點:程式碼看起來冗餘

  4. 這個不推薦,跟第二中相通,先通過keySet()獲得key的結果集,遍歷得到每一個key值,然後通過get(key)獲得值,

     Set<Object> keyset = map.keySet();
              for (Object o : keyset) {
                  System.out.println(o+":"+map.get(o));
              }

    優點:程式碼簡練

    缺點:效率更低

由於筆者能力問題,有不足的地方,希望指出來!