1. 程式人生 > >《Map中HashMap與TreeMap的排序以及四種遍歷方式》

《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()獲取值。