1. 程式人生 > >Map的取值方式介紹

Map的取值方式介紹

在Map集合中,有如下定義:
          values():方法是獲取集合中的所有的值----沒有鍵,沒有對應關係,
          KeySet():將Map中所有的鍵存入到set集合中。因為set具備迭代器iterator()方法。所以可以使用迭代方式取出所有的鍵,接著根據get(key)方法。獲取每一個鍵對應的值。 keySet():迭代後只能通過get(key)取值

          entrySet():Set<Map.Entry<K,V>> entrySet() //返回此對映中包含的對映關係的 Set 檢視。 Map.Entry表示對映關係。entrySet():迭代後可以使用e.getKey(),e.getValue()分別取key值和value值。返回的是Entry介面 。

一、values()方法

下面通過例子看看:
package sample;
import java.util.*;
class MapTestBrower
{
    public static void main(String[] agrs)
    {
       HashMap<Integer,String> hm=new HashMap<Integer,String>();
       hm.put(1,"張無忌");
       hm.put(2,"李斯特");      
       hm.put(5,"米老鼠");
       hm.put(3,"鬥戰勝佛");
       hm.put(4,"唐老鴨");
       
       Collection<String> collection=hm.values();
       System.out.println(collection);//輸出collection中的內容
    }
}

輸出結果如下所示:


由結果可以看出,values獲得的結果中只有值而沒有鍵

當然,我們也能夠採用以下方式輸出:

      Collection c=hm.values();
         for(Object o:c)
         { 
           if(o.equals("李斯特"))
               System.out.println(o);
         }
這樣的話就可以進行對內容的檢測了,如果有符合條件的,就可以進行操作了

二. keySet()方式。

Set<K> keySet() //返回值是個只存放key值的Set集合(集合中無序存放的)

package sample;
import java.util.*;
class MapTestBrower
{
    public static void main(String[] agrs)
    {
       HashMap<Integer,String> hm=new HashMap<Integer,String>();
       hm.put(1,"張無忌");
       hm.put(2,"李斯特");      
       hm.put(5,"米老鼠");
       hm.put(3,"鬥戰勝佛");
       hm.put(4,"唐老鴨");
       Set<Integer> set=hm.keySet();//先獲取Map集合中的所有鍵值,由於剛開始設定為Integer,所以使用泛型限定
       Iterator<Integer> it=set.iterator();//使用上面獲取的set獲取迭代器Iterator
       while(it.hasNext())//判斷迭代器中向下是否還有元素
       {
         Integer temp=it.next();//獲取鍵
         System.out.println(temp+" "+hm.get(temp));//輸出鍵和對應的值
       }
    }
}
結果如下所示:

三. entrySet()方式:

     Set<Map.Entry<K,V>> entrySet() //返回對映所包含的對映關係的Set集合(一個關係就是一個鍵-值對),就是把(key-value)作為一個整體一對一對地存放到Set集合當中的。

如下程式碼所示:

package sample;
import java.util.*;
import java.util.Map.*;//匯入Map.*包
class MapTestBrower
{
    public static void main(String[] agrs)
    {
       HashMap<Integer,String> hm=new HashMap<Integer,String>();
       hm.put(1,"張無忌");
       hm.put(2,"李斯特");      
       hm.put(5,"米老鼠");
       hm.put(3,"鬥戰勝佛");
       hm.put(4,"唐老鴨");
       Set<Entry<Integer,String>> set=hm.entrySet();//通過entrySet()方法將map集合中的對映關係取出(這個關係就是Entry型別)
       Iterator<Entry<Integer,String>> it=set.iterator();//將關係集合entrySet進行迭代,存放到迭代器it中
       while(it.hasNext())
       {
         Entry<Integer,String> e=it.next();//獲取Entry型別關係物件e
         System.out.println(e.getKey()+"  "+e.getValue());//通過關係物件獲取Key及值,並且進行輸出
       }
    }
}
結果如下所示(輸出結果相同):



雖然使用keyset及entryset來進行遍歷能取得相同的結果,但兩者的遍歷速度是有差別的
            keySet():迭代後只能通過get()取key
            entrySet():迭代後可以e.getKey(),e.getValue()取key和value。返回的是Entry介面

keySet()的速度比entrySet()慢了很多,也就是keySet方式遍歷Map的效能不如entrySet效能好,為了提高效能,以後多考慮用entrySet()方式來進行遍歷。

以上就是Map中取值的方式

相關推薦

Map方式介紹

在Map集合中,有如下定義:           values():方法是獲取集合中的所有的值----沒有鍵,沒有對應關係,           KeySet():將Map中所有的鍵存入到set集合中。因為set具備迭代器iterator()方法。所以可以使用迭代方式取出所

Map的幾種遍歷方式

今天心情不好,上午花了一點時間來寫Demo,到網上逛了逛,也算整理了一下基礎知識,未來的路還有很長,這樣的Demo也會有很多。 import org.junit.Test; import java.util.*; public class test { @Test publ

JavaScript Json與Map互轉以及Map物件的方式

Json格式(Json字串) : var json='{"name": "lily","age":"15"}' Map格式: var map={name: "lily", age:"15"} Map取值: var name=map["name"]; 或 var

Map的兩種方式keySet和entrySet

Map與Collection在集合框架中屬並列存在、 Map是一次新增一對元素(儲存的是夫妻,哈哈)。Collection是一次新增一個元素(儲存的是一個單體)。   Map儲存的是鍵值對。   Map儲存元素使用put方法, Collection

轉+總結!! 關於jsp頁面方式

方式 deb 內置對象 req disabled 網上 查看 請求參數 ack 1. 前臺往後臺傳值,通過提交表單,在後臺有set,get方法,可以直接取到。如果通過request.getParameter(paramName) 去獲取通過會報空指針異常。 其中r

py呼叫oracle的儲存過程,注意procedure的out方式

#!/usr/bin/env python import sys import csv import cx_Oracle import codecs import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

HashMap存方式

Hashmap:(鍵值對方式儲存)          底層:陣列+連結串列結構 存值方式(陣列初始化長度為16): 例如是一個長度16的陣列:相對於陣列長度求模 再次儲存: 取值: 為什麼說hashm

json字串資料轉成json物件方式

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.models.auth.I

MyBatis總結(十八)--#{}方式時更加豐富的用法

本文內容來自尚矽谷 使用方式 引數位置支援的屬性  –   javaType、jdbcType、mode、numericScale、 resultMap、typeHandler、jdbcTypeName、expression 這裡為可能為空的

Numpy 與 DataFrame方式對比

對比Numpty 與 DataFrame預設索引取值不同點 Numpy索引取值 #Numpy索引取值 data=np.empty((2,4),dtype=int) print(data) ''' [[4128860 6029375 3801157 7340124] [7602297 727460

js方式

。                  jQuery     : $("#idName").html(); $(".className").html();                  javaScript : document.getElementById(“idName”).innerHTML ;  

HashMap方式

public static void main(String[] args){ Map<String,String> map=new HashMap<>(); map.put(“1”,“A”); map.put(“2”,“B”); map.pu

mybatis中兩種方式?談談Spring框架理解?

1.mybatis中兩種取值方式?   回答:Mybatis中取值方式有幾種?各自區別是什麼? Mybatis取值方式就是說在Mapper檔案中獲取service傳過來的值的方法,總共有兩種方式,通過 $ 和 # , # 是 我們最常用的方式。 我們都說Mybatis是封裝了JDBC,所以兩種方式的區別還要

Mybatis的兩種方式#{ } 與${ } 使用時需要注意的地方

需要對映的介面: /** * 根據id查詢管理員 * @param id * @return */ Manager retrieveManagerById(@Param("id")Integer id); /** * 根據名字查詢管理員 * @param name * @ret

Struts2標籤方式一/二

Struts2標籤取值方式   1.標籤取值方式一 —— <s:property value="" />     當Action的valueStack中有該屬性的值時,只需直接使用該屬性的名字即可;      當Action的valueStack中沒有該屬性的值

jsp前端jstl的map

${map['key']} 之前一直用的辦法: <c:if test="${bean.type eq 0}">採購單</c:if> <c:if test="${bean.type eq 1}">收貨單</c:if> 。。

LoadRunner中,引數化時Unique方式的理解

LoadRunner中,引數化時Unique取值方式的理解 2012年10月15日 18:10:36 瑞秋 閱讀數:10028   在LoadRunner

Struts2標籤方式

1.標籤取值方式一     通過<s:property value="" />取值     當Action的valueStack中有該屬性的值時,只需直接使用該屬性的名字即可;      當Action的valueStack中沒有該屬性的值時,比如在sessi

struts 3種從jsp頁面 方式

Action實現方式: 1.  普通java類 2.  實現action介面實現execute方法 3.  繼承ActionSupport類 取值方式: 1.  成員屬性set方法取值 2.成員實體屬性 Page: <form action="loginthree"&

指標指向陣列方式

在go的使用中發現用c的指標取值方式取不到於是嘗試多次後解決問題知道如何取值了 var bArray = [5]float32{0, 1, 2,3,4} fmt.Println("開始