導航:首頁 > 編程語言 > javahashmapvalues

javahashmapvalues

發布時間:2025-09-17 02:46:49

java中幾種Map在什麼情況下使用,並簡單介紹原因及原理

一、Map用於保存具有映射關系的數據,Map里保存著兩組數據:key和value,它們都可以使任何引用類型的數據,但key不能重復。所以通過指定的key就可以取出對應的value。Map介面定義了如下常用的方法:
1、void clear():刪除Map中所以鍵值對。
2、boolean containsKey(Object key):查詢Map中是否包含指定key,如果包含則返回true。
3、boolean containsValue(Object value):查詢Map中是否包含指定value,如果包含則返回true。
4、Set entrySet():返回Map中所包含的鍵值對所組成的Set集合,每個集合元素都是Map.Entry對象(Entry是Map的內部類)。
5、Object get(Object key):返回指定key所對應的value,如Map中不包含key則返回null。
6、boolean isEmpty():查詢Map是否為空,如果空則返回true。
7、Set keySet():返回該Map中所有key所組成的set集合。
8、Object put(Object key,Object value):添加一個鍵值對,如果已有一個相同的key值則新的鍵值對覆蓋舊的鍵值對。
9、void putAll(Map m):將指定Map中的鍵值對復制到Map中。
10、Object remove(Object key):刪除指定key所對應的鍵值對,返回可以所關聯的value,如果key不存在,返回null。
11、int size():返回該Map里的鍵值對的個數。
12、Collection values():返回該Map里所有value組成的Collection。
Map中包含一個內部類:Entry。該類封裝了一個鍵值對,它包含了三個方法:
1、Object getKey():返回該Entry里包含的key值。
2、Object getValeu():返回該Entry里包含的value值。
3、Object setValue(V value):設置該Entry里包含的value值,並返回新設置的value值。

二、HashMap和Hashtable實現類:
1、HashMap與HashTable的區別:
1) 同步性:Hashtable是同步的,這個類中的一些方法保證了Hashtable中的對象是線程安全的。而HashMap則是非同步的,因此HashMap中的對象並不是線程安全的。因為同步的要求會影響執行的效率,所以如果你不需要線程安全的集合那麼使用HashMap是一個很好的選擇,這樣可以避免由於同步帶來的不必要的性能開銷,從而提高效率。
2) 值:HashMap可以讓你將空值作為一個表的條目的key或value,但是Hashtable是不能放入空值的。HashMap最多隻有一個key值為null,但可以有無數多個value值為null。
2、性能:HashMap的性能最好,HashTable的性能是最差(因為它是同步的)
3、注意:
1)用作key的對象必須實現hashCode和equals方法。
2)不能保證其中的鍵值對的順序
3)盡量不要使用可變對象作為它們的key值。

三、LinkedHashMap:
它的父類是HashMap,使用雙向鏈表來維護鍵值對的次序,迭代順序與鍵值對的插入順序保持一致。LinkedHashMap需要維護元素的插入順序,so性能略低於HashMap,但在迭代訪問元素時有很好的性能,因為它是以鏈表來維護內部順序。

四、TreeMap:
Map介面派生了一個SortMap子介面,SortMap的實現類為TreeMap。TreeMap也是基於紅黑樹對所有的key進行排序,有兩種排序方式:自然排序和定製排序。Treemap的key以TreeSet的形式存儲,對key的要求與TreeSet對元素的要求基本一致。
1、Map.Entry firstEntry():返回最小key所對應的鍵值對,如Map為空,則返回null。
2、Object firstKey():返回最小key,如果為空,則返回null。
3、Map.Entry lastEntry():返回最大key所對應的鍵值對,如Map為空,則返回null。
4、Object lastKey():返回最大key,如果為空,則返回null。
5、Map.Entry higherEntry(Object key):返回位於key後一位的鍵值對,如果為空,則返回null。
6、Map.Entry lowerEntry(Object key):返回位於key前一位的鍵值對,如果為空,則返回null。
7、Object lowerKey(Object key):返回位於key前一位key值,如果為空,則返回null。
8、NavigableMap subMap(Object fromKey,boolean fromlnclusive,Object toKey,boolean toInciusive):返回該Map的子Map,其key范圍從fromKey到toKey。
9、SortMap subMap(Object fromKey,Object toKey );返回該Map的子Map,其key范圍從fromkey(包括)到tokey(不包括)。
10、SortMap tailMap(Object fromkey ,boolean inclusive):返回該Map的子Map,其key范圍大於fromkey(是否包括取決於第二個參數)的所有key。
11、 SortMap headMap(Object tokey ,boolean inclusive):返回該Map的子Map,其key范圍小於tokey(是否包括取決於第二個參數)的所有key。

五、WeakHashMap:
WeakHashMap與HashMap的用法基本相同,區別在於:後者的key保留對象的強引用,即只要HashMap對象不被銷毀,其對象所有key所引用的對象不會被垃圾回收,HashMap也不會自動刪除這些key所對應的鍵值對對象。但WeakHashMap的key所引用的對象沒有被其他強引用變數所引用,則這些key所引用的對象可能被回收。WeakHashMap中的每個key對象保存了實際對象的弱引用,當回收了該key所對應的實際對象後,WeakHashMap會自動刪除該key所對應的鍵值對。

六、IdentityHashMap類:
IdentityHashMap與HashMap基本相似,只是當兩個key嚴格相等時,即key1==key2時,它才認為兩個key是相等的 。IdentityHashMap也允許使用null,但不保證鍵值對之間的順序。

七、EnumMap類:
1、EnumMap中所有key都必須是單個枚舉類的枚舉值,創建EnumMap時必須顯示或隱式指定它對應的枚舉類。
2、EnumMap根據key的自然順序,即枚舉值在枚舉類中定義的順序,來維護鍵值對的次序。
3、EnumMap不允許使用null作為key值,但value可以。

② Java中的HashMap的工作原理是什麼

一,存儲方式: Java中的HashMap是以鍵值對(key-value)的形式存儲元素的。


二,調用原理: HashMap需要一個hash函數,它使用hashCode()和equals()方法來向集合/從集合添加和檢索元素。當調用put()方法的時候,HashMap會計算key的hash值,然後把鍵值對存儲在集合中合適的索引上。如果key已經存在了,value會被更新成新值。


三,其他熱性: HashMap的一些重要的特性是它的容量(capacity),負載因子(load factor)和擴容極限(threshold resizing)。

③ java 怎麼樣獲取Map中第幾個鍵值對

publicstaticvoidmain(String[]args){

Map<String,String>map=newHashMap<String,String>();

map.put("key1","value1");

map.put("key2","value2");

map.put("key3","value3");

Set<String>keySet=map.keySet();

inti=map.size()-1;

Map<Integer,String>mapKey=newHashMap<Integer,String>();

Map<Integer,String>mapValue=newHashMap<Integer,String>();

for(java.util.Map.Entry<String,String>entry:map.entrySet()){

//將原來MAP的VALUE放入新的MAP的VALUE裡面

mapKey.put(i,entry.getValue());

//將原來MAP的KEY放入新的MAP的VALUE裡面

mapValue.put(i,entry.getKey());

i--;

}
//列印KEY值

System.out.println(mapKey.get(2));
//列印VALUE值

System.out.println(mapValue.get(0));

}

④ JAVA hashmap的用法

//distHosts是一個HashMap
Iterator
itr
=
this.distHosts.values().iterator();
while
(itr.hasNext())
{
Host
host
=
(Host)
itr.next();
logger.info("從主機列表中取得主機,其地址為:
"
+
host.getHost());
******
也許對你有幫助,現在還沒有研究其API

⑤ 工作中你是如何用Java 遍歷 Map的呢

在java中遍歷Map有不少的方法。我們看一下最常用的方法及其優缺點。

既然java中的所有map都實現了Map介面,以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)

方法一、 在for-each循環中使用entries來遍歷

這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。

作為方法一的替代,這個代碼看上去更加干凈;但實際上它相當慢且無效率。因為從鍵取值是耗時的操作(與方法一相比,在不同的Map實現中該方法慢了20%~200%)。如果你安裝了FindBugs,它會做出檢查並警告你關於哪些是低效率的遍歷。所以盡量避免使用。

總結

如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。

⑥ 在java中,遍歷hashmap用什麼方法

public class MapTest {
public static void main(String[] args) {
//先來一個map
Map<String,String> map=new HashMap<String,String>(){{//匿名內部類初始化
put("breakfast", "早點");
put("lunch", "中飯");
put("supper", "晚點");
}};
//遍歷方法1:利用keyset進行遍歷,它的優點在於可以根據你所想要的key值得到你想要的 values,更具靈活性!!
Set<String> keySet=map.keySet();
for(Iterator<String> it=keySet.iterator();it.hasNext();){
String s=it.next();
System.out.println(map.get(s));
}
//遍歷方法2:最常規的一種遍歷方法,最常規就是最常用的,雖然不復雜,但很重要,這是我們最熟悉的,就不多說了!!
Collection<String> c = map.values();
for(Iterator<String> it=c.iterator();it.hasNext();){
System.out.println(it.next());
}
//遍歷方法3:比較復雜的一種遍歷在這里,用map對象的keyEnter方法,呵呵~~他很暴力哦,它的靈活性太強了,想得到什麼就能得到什麼
Set<Map.Entry<String, String>> set=map.entrySet();
for(Iterator<Map.Entry<String, String>> it=set.iterator();it.hasNext();){
Map.Entry<String, String> mapEnter=it.next();
System.out.println("key="+mapEnter.getKey()+",value="+mapEnter.getValue());
}
}
}

⑦ Java中怎麼遍歷map中value值

Java中遍歷Map對象的4種方法:

1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容專量大時。

(7)javahashmapvalues擴展閱讀:

關於JAVA的遍歷知識補充:

1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。

2、使用EntrySet 遍歷,效率更高。

⑧ java中如何把hashmap轉換成object數組

hashmap是以鍵值對(key-value)的格式保存對象的容器,
數組是按順序一個一個保存對象的容器
你把hashmap轉換成數組是想把key轉成數組呢還是把value轉成數組呢或者key和value組合成的對象轉換成數組呢.我把key和value的分別寫出來,組合對象的同理建新對象保存即可
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", "tom");
map.put("b", "jerry");
Object[] keys = map.keySet().toArray();
Object[] values = map.values().toArray();
System.out.println("key數組:"+Arrays.toString(keys));
System.out.println("value數組:"+Arrays.toString(values));

閱讀全文

與javahashmapvalues相關的資料

熱點內容
視頻文件損壞返回不了 瀏覽:656
如何判斷網路被降速了 瀏覽:676
ps做成圖片後怎麼弄成文件 瀏覽:689
左側導航欄css代碼 瀏覽:952
釘釘傳送文件最大多少兆 瀏覽:126
app下載哪裡最全 瀏覽:599
word如何畫大箭頭 瀏覽:245
word批量轉pdf工具21注冊機 瀏覽:546
列印文檔文件3000字需要多少錢 瀏覽:239
泊車助手app 瀏覽:147
pscs6完全自學教程 瀏覽:461
文件夾去不掉只讀屬性 瀏覽:203
qq怎麼接收文件夾 瀏覽:35
javahashmapvalues 瀏覽:548
滑鼠選定不了文件內容是壞了么 瀏覽:589
打開excel標准模板文件名 瀏覽:798
該文件名字不包含擴展名 瀏覽:565
華為備份文件 瀏覽:368
批量刪除cpp文件代碼注釋的工具 瀏覽:312
下列哪些不屬於可編程邏輯器件 瀏覽:963

友情鏈接