Ⅰ 如何獲取map的key和value
標準的Map訪問方法如下:
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;....
;}
}
然後,這個方法有一個問題。從Map中取得關鍵字之後,我們必須每次重復返回到Map中取得相對的值,這是很繁瑣和費時的。
幸運的是,這里有一個更加簡單的途徑。Map類提供了一個稱為entrySet()的方法,這個方卜歲嫌法返回一個Map.Entry實例化後的對象集。
接著,Map.Entry類提供了一個getKey()方法和一個getValue()方法,因此,上面的代碼可以被組織得更符合邏輯。舉例如下:
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;....
}
}
盡管增加了一行代碼,我們卻省略了許多對Map不必要的逗get地調用。型手同時,提供給開發人員一個同時保持了關鍵字和其對應的值的類。Map.Entry同時也提供了一個setValue()方法,程序員可以使用它修改map裡面的值。
Hashtable內部排列的方式是散列排布,所以當輸出信息時雀做會是無序的。為了能保證輸出的數據按照順序排列,不要渴望用java自帶的函數來對
Hashtable對象進行調整處理。當我們獲取Hashtable里的KEY和VALUE時,一般都運行了Map.Entry類來轉換,好,現在就用這
個類來作文章,我具體寫了一個方法。
代碼:
/**
* 方法名稱:getSortedHashtable
* 參數:Hashtable h 引入被處理的散列表
* 描述:將引入的hashtable.entrySet進行排序,並返回
*/
public static Map.Entry[] getSortedHashtable(Hashtable h){
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries,new Comparator(){
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry)arg0).getKey();
Object key2 = ((Map.Entry)arg1).getKey();
return ((Comparable)key1).compareTo(key2);
}
});
return entries;
}
調用這個方法:
Map.Entry[] set = getSortedHashtable(t);
//perportyTable
for (int i=0;i<set.length;i++){
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
Ⅱ Java中怎麼遍歷map中value值
Map有個values()方法
publicstaticvoidmain(String[]args){
Mapmap=newHashMap();//定義Map集合對象
map.put("apple","新鮮的蘋果");//向集合中添加對象
map.put("computer","戚茄配置優良的計算機");
吵森map.put("book","堆積成山的圖書");
Collectionvalues=map.values();//獲取Map集升仔畝合的value集合
for(Objectobject:values){
System.out.println("鍵值:"+object.toString());//輸出鍵值對象
}
}
Ⅲ java map中怎麼通過鍵取出值
在java map中取出鍵值有以下兩種方法:
1.第一種方法根據鍵值的名字取值
import java.util.HashMap;
import java.util.Ma
ublic class Test {
public static void main(String[] args)嘩灶
{ // TODO Auto-generated method stub
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", "sunny");
map.put("value", "syl");
System.out.println(map.get("id"))
System.out.println(map.get("value")); }
2.第二種方法:遍歷
import java.util.HashMap;
import java.util.Map;
import java.util.Set
ublic class Test {
public static void main(String[] args)
{
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", "sunny");
map.put("value", "syl");
Set<String> get = map.keySet(); 芹衫
for (String test:get)
{ 嫌蘆腔
System.out.println(test+","+map.get(test));
} }
Ⅳ java 怎麼取map的value值
用key來提取:map.get(key) 返回的就是key對應的value
Ⅳ java怎麼同時得到map的key和value值
Map是成對放的,一放一對。。分成KEY和VALUE
Map分為HashMap或Hashtable、LinkedHashMap和TreeMap幾個,
其中HashMap是新版的,線程不安全的,Hashtable是線程安全的。
Map是一種把鍵對象和值對象進行關聯的容器,而一個值對象又可以是一個Map,依次類推,這樣就可形成一個多級映射。對於鍵對象來說,像Set一樣,一個Map容器中的鍵對象不允許重復,這是為了保持查找結果的一致性;如果有兩個鍵對象一樣,那你想得到那個鍵對象所對應的值對象時就有問題了,可能你得到的並不是你想的那個值對象,結果會造成混亂,所以鍵的唯一性很重要,也是符合冊和弊集合的性質的。當然在使用過程中,某個鍵所對應的值對象可能會發生變化,這時會按照最後一次修改的值對象與鍵對應。對於值對象則沒有唯一性的要求。你可以將任意多個鍵都映射到一個值對象上,這不會發生任何問題(不過對你的使用卻可能會造成不便,你不知道你得到的到底是那一個鍵所對應的值對象)。Map有兩種比較常用的實現:HashMap和TreeMap。HashMap也用州族到了哈希碼的演算法,以便快速查找一個鍵,TreeMap則是對鍵按序存放,因此它便有一些擴展的方法,比如firstKey(),lastKey()等,你還可以從TreeMap中指定一個范圍以取得棚神其子Map。鍵和值的關聯很簡單,用put(Object
key,Object
value)方法即可將一個鍵與一個值對象相關聯。用get(Object
key)可得到與此key對象所對應的值對象。
import
java.util.*;
class
HashMapDemo
{
public
static
void
main(String
args[])
{
//
Create
a
hash
map
HashMap
hm
=
new
HashMap();
//
Put
elements
to
the
map
hm.put("John
Doe",
new
Double(3434.34));
hm.put("Tom
Smith",
new
Double(123.22));
hm.put("Jane
Baker",
new
Double(1378.00));
hm.put("Todd
Hall",
new
Double(99.22));
hm.put("Ralph
Smith",
new
Double(-19.08));
//
Get
a
set
of
the
entries
Set
set
=
hm.entrySet();
//
Get
an
iterator
Iterator
i
=
set.iterator();
//
Display
elements
while(i.hasNext())
{
Map.Entry
me
=
(Map.Entry)i.next();
System.out.print(me.getKey()
+
":
");
System.out.println(me.getValue());
}
}
由Map.Entry定義的getKey(
)和getValue(
)方法而顯示。程序開始創建一個散列映射,然後將名字的映射增加到平衡表中。接下來,映射的內容通過使用由調用函數entrySet(
)而獲得的集合「視圖」而顯示出來。關鍵字和值通過調用
Ⅵ 如何通過獲取map中的key來獲得與key對應的value值,進行運算
獲取map的key和value的方法分為以下兩種形式:
1、map.keySet():先獲取map的key,然後根據key獲取對應的value;
2、map.entrySet():同時查詢map的key和value,只需要查詢一次;
注意:當map的value值相等時,根據key值進行排序
很多人都推薦使用entrySet,認為其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,針對每個key,都要去Map中額外查找一次value,從而降低了總體效率。
兩種方法對比測試如下:
HashMap測試數據:
(6)java獲取map的value擴展閱讀:
map.keySet()和map.EntrySet()的比較:
一、如果使用HashMap
1、同時遍歷key和value時,keySet與entrySet方法的性能差異取決於key的具體情況,如復雜度(復雜對象)、離散度、沖突率等。換言之,取決於HashMap查找value的開銷。
entrySet一次性取出所有key和value的操作是有性能開銷的,當這個損失小於HashMap查找value的開銷時,entrySet的性能優勢就會體現出來。
在比測試中,當key是最簡單的數值字元串時,keySet可能反而會更高效,耗時比entrySet少10%。總體來說還是推薦使用entrySet。
因為當key很簡單時,其性能或許會略低於keySet,但卻是可控的;而隨著key的復雜化,entrySet的優勢將會明顯體現出來。當然,我們可以根據實際情況進行選擇
2、只遍歷key時,keySet方法更為合適,因為entrySet將無用的value也給取出來了,浪費了性能和空間。在上述測試結果中,keySet比entrySet方法耗時少23%。
3、只遍歷value時,使用vlaues方法是最佳選擇,entrySet會略好於keySet方法。
二、如果使用TreeMap
1、同時遍歷key和value時,與HashMap不同,entrySet的性能遠遠高於keySet。這是由TreeMap的查詢效率決定的,也就是說,TreeMap查找value的開銷較大,明顯高於entrySet一次性取出所有key和value的開銷。因此,遍歷TreeMap時強烈推薦使用entrySet方法。
2、只遍歷key時,keySet方法更為合適,因為entrySet將無用的value也給取出來了,浪費了性能和空間。在上述測試結果中,keySet比entrySet方法耗時少24%。
3、只遍歷value時,使用vlaues方法是最佳選擇,entrySet也明顯優於keySet方法。
網路——Map
Ⅶ java怎樣獲取map所有的value值
方式有兩種 :
1、遍歷map.keySet()
2、遍歷map.EntrySet()
Ⅷ java Map 根據Map的值(value)取鍵(key)
java根據Map的值(value)取鍵(key) 的實現方法有4種,分別為:
(1)使用for循環遍歷
(2)使用Iterator迭代器
(3)使用KeySet迭代
(4)使用EnterySet迭代
下面為以上4種方法具體實現的代碼:
1、使用for循環遍歷
public static Object getKey(HashMap<Object,Object> map, String v) {
String key = "";
for (Map.Entry<String, Object> m :map.entrySet()) {
if (m.getValue().equals(v)) {
key = m.getKey();
}}
return key;
}
Ⅸ Java中怎麼遍歷map中value值
Java中遍歷Map對象的4種方法:
1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容量大時。
(9)java獲取map的value擴展閱讀:
關於JAVA的遍歷知識補充:
1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。
2、使用EntrySet 遍歷,效率更高。
Ⅹ java中如何通過Map的key獲得它的value
Map<String,String> maps = new HashMap<String,String>();
//信悶獲取key的集合滑鋒彎
Set<String> keySet = maps.keySet();
//遍歷基明key集合,獲取value
for(String key : keySet) {
String value = maps.get(key);
}