《Map中HashMap與TreeMap的排序以及四種遍歷方式》

一、Map概述

1、Map是將鍵映射到值( key-value )的對象。一個映射不能包含重複的鍵;每個鍵最多隻能映射到一個值。

2、Map與Collection的區別

    (1)Map 是以鍵值對的方式存儲元素,鍵唯一,值可以重複。

    (2)Collection存儲的是單列元素,子接口Set元素唯一,子接口List可以重複。

    (3)Map的數據結構針對鍵有效,跟值無關,Collection針對元素有效。

3、HashMap 與TreeMap 的創建,排序。

/***
 * Map類的一些簡單操作
 * 包括TreeMap的排序,HashMap的排序,四種遍歷方式
 * @author Administrator
 *
 */
public class MapTest {

	public static void main(String[] args) {

		//創建map對象,並賦值
		
		Map<String,String> treeMap = new TreeMap<String,String>(new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return o1.compareTo(o2);
			}
		});
		
		treeMap.put("sufow1", "舒泉1");
		treeMap.put("sufow2", "舒泉2");
		treeMap.put("sufow3", "舒泉3");
		treeMap.put("sufow4", "舒泉4");
		treeMap.put("sufow5", "舒泉5");
		treeMap.put("sufow6", "舒泉6");
		treeMap.put("sufow7", "舒泉7");
		
		System.out.println("TreeMap");
		
		//遍歷map 方式一,根據keyset方法獲取所有的key,再根據key獲取值
		for(String str :treeMap.keySet()){
			String val = treeMap.get(str);
			System.out.println(val);
		}
		
		Map<String,String> hashMap = new HashMap<String ,String>();
		
		
		hashMap.put("sufow1", "舒泉1");//可以寫入null值
		hashMap.put("sufow2", "舒泉2");
		hashMap.put("sufow3", "舒泉3");
		hashMap.put("sufow4", "舒泉4");
		hashMap.put("sufow5", "舒泉5");
		hashMap.put("sufow6", "舒泉6");
		hashMap.put("sufow7", "舒泉7");
		
		System.out.println("HashMap");
		
		//先排序
		
		List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(hashMap.entrySet());
		
		//通過比較器來排序
		Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
			@Override
			public int compare(Entry<String, String> o1,
					Entry<String, String> o2) {
				return o1.getValue().compareTo(o2.getValue());
			}
		});
		
		//遍歷List,第二種通過Map.Entry
		for(Map.Entry<String, String> m :list){
			String val =  m.getValue();
			System.out.println(val);
		}
		
		//第二種遍歷map的方式,根據迭代器Iterator
		Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator();
		
		while(iterator.hasNext()){
			Map.Entry<String, String> map = iterator.next();
			System.out.println(map.getKey());
			System.out.println(map.getValue());
		}
		
		//第三種通過values,只能遍歷value
		for(String str:hashMap.values()){
			System.out.println(str);
		}
		
		
		//第四種,通過Map.Entry
		for(Map.Entry<String, String> map:hashMap.entrySet()){
			System.out.println(map.getKey());
			System.out.println(map.getValue());
		}
	}

 

4、總結

(1)map排序的兩種方式

         第一種:通過 new Comparator的接口,實現方法,進行排序。

         第二種:先將Map轉換成List , 通過Collections的sort方法進行排序。


(2)Map的四種遍歷方式

        第一種:通過Map的keySet()方法遍歷。

        第二種:通過Map的values()方法遍歷。

        第三種:通過Map的entrySet()方法的Iterator方法將轉換成Iterator。通過迭代器遍歷。

        第四種:通過Map的entrySet()方法,將其轉換成Map.Entry對象,在通過foreach遍歷,通過Map.Entry對象的getValue()獲取值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章