iT邦幫忙

0

關於Java HashMap

想請教一下各位大大,關於java中HashMap它的結果值順序是如何決定的?
以下是我試驗的程式碼和輸出結果。我實在是想不通輸出結果的順序為什麼是這樣,我原本以為是依照put的順序但觀察結果好像並不是,然後我有在想是不是依照我的Key它的英文字母順序但看起來也不是....
有人知道HashMap型態輸出結果的排列順序是依照什麼嗎? Thanks~
https://ithelp.ithome.com.tw/upload/images/20190522/20110042kCWKQliS7k.jpg

import java.util.HashMap;

public class WW {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashMap<String, Integer> list=new HashMap<String, Integer>();
		list.put("Wendy", 70);
		list.put("Jeff", 68);
		list.put("Tony", 69);
		list.put("Pom",77);
		System.out.println(list);
	}

}
xdxxx iT邦新手 4 級 ‧ 2019-05-22 08:58:50 檢舉
在HashMap裡資料的排列與key、value、加入順序都無關
HashMap有自己獨特的排列方式
HashMap的作法只要稍加轉換仍舊可以排序列印出所有資料
好唷~謝謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
暐翰
iT邦大師 1 級 ‧ 2019-05-22 08:06:38
最佳解答

HashMap無法保證,輸出順序和輸入順序一致
想使用順序性請使用LinkedHashMap

import java.util.*; 

public class WW {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LinkedHashMap<String, Integer> list=new LinkedHashMap<String, Integer>();
		list.put("Wendy", 70);
		list.put("Jeff", 68);
		list.put("Tony", 69);
		list.put("Pom",77);
		System.out.println(list); //{Wendy=70, Jeff=68, Tony=69, Pom=77}
	}
}

線上測試連結

問題解決了!謝謝你~

暐翰 iT邦大師 1 級 ‧ 2019-05-22 12:33:45 檢舉

/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答