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