---------------------- android培訓、java培訓、期待與您交流! ----------------------
Map接口可以操作兩個值。
比如說:
Key(姓名) value(電話號碼)
張三 123123
李四 456456
王五 789789
這樣的數據 就可以使用Map存儲。使用的時候根據key值去map中查找與其對應的value值。
Map接口旗下有3個子類:
1. HashMap<K,V>
2. Hashtable<K,V>
3. TreeMap<K,V>
常用方法:
NO. |
方法 |
作用 |
1 |
public void clear() |
清空所有元素 |
2 |
public V put(K key,V value) |
設置元素的內容 返回該位置上的舊元素 |
3 |
public V get(Object key) |
根據提供的鍵(key) 查找值(value) |
4 |
public boolean containsKey(Object key) |
查找指定的key是否存在 |
5 |
public boolean containsValue(Object value) |
查找指定的value是否存在 |
6 |
public boolean isEmpty() |
判斷集合是否爲空 |
7 |
public Set<Map.Entry<K,V>> entrySet() |
將全部的元素變成一個Set |
8 |
public Set<K> keySet() |
將全部的key變成Set |
9 |
public int size() |
獲取結合元素數量 |
1 |
public Collection<V> values() |
將所有的value變成collection |
1 |
public V remove(Object key) |
指定key刪除value |
1 |
public void putAll(Map<? extends K,? extends V> m) |
增加一組元素 |
1. HashMap<K,V>
Map中 key值不可以重複。 如果重複了,則新value會覆蓋舊value。
如果使用用戶自定義類做key 則同樣需要同時重寫:hashCode()方法和equals()方法。少一個都不行。
如果想完整的使用HashMap<K,V>類那麼最少要重寫equals()和hashCode()方法。
重寫hashCode() 用於獲得元素的存儲位置。
重寫equals() 用於在兩個元素的位置相同的時候 比較兩個元素的key是否相等。
2. Hashtable<K,V>
Hashtable<K,V>和HashMap<K,V>相比
No. |
區別點 |
HashMap |
Hashtable |
1 |
推出版本 |
JDK1.2 |
JDK1.0 |
2 |
操作 |
異步操作 |
同步操作 |
3 |
安全性 |
非線程安全 |
線程安全 |
4 |
性能 |
比Hashtable 高 |
比HashMap 低 |
3. TreeMap<K,V>
import java.util.*; public class MapDemo { public static void main(String[] args){ Map<String,String> map = new TreeMap<String,String>(); map.put("No.1","張三"); map.put("No.1","李四"); map.put("No.2","王五"); map.put("No.3","趙六"); map.put("No.4","秦七"); System.out.println(map); } } |
程序執行結果:
{No.1=李四, No.2=王五, No.3=趙六, No.4=秦七} |
TreeMap類同樣不允許key重複。並且會自動排序。
Map集合的輸出:
在Map中可以保存兩個值。 但是實際上在Map接口內部卻不是直接保存這兩個值。
在Map接口中真正保存的是一個個MapEntry對象。
在一個MapEntry對象保存的纔是map中定義的K和V。
因此在Map中不可以直接使用Iterator接口遍歷。
範例:Iterator遍歷元素。
import java.util.*;
public class MapDemo {
public static void main(String[] args){
Map<Person,String> map = new TreeMap<Person,String>();
map.put(new Person("張三", 20),"No.1");
map.put(new Person("李四", 21),"No.2");
map.put(new Person("李四", 21),"No.3");
map.put(new Person("王五", 64),"No.4");
Set<Map.Entry<Person, String>> set = map.entrySet();
Iterator<Map.Entry<Person, String>> iter = set.iterator();
while(iter.hasNext()){
Map.Entry<Person, String> temp = iter.next();
System.out.println(temp.getKey()+" "+temp.getValue());
}
}
}
範例:foreach遍歷元素。
import java.util.*;
public class MapDemo {
public static void main(String[] args){
Map<Person,String> map = new TreeMap<Person,String>();
map.put(new Person("張三", 20),"No.1");
map.put(new Person("李四", 21),"No.2");
map.put(new Person("李四", 21),"No.3");
map.put(new Person("王五", 64),"No.4");
for(Map.Entry<Person, String> temp : map.entrySet())
System.out.println(temp.getKey()+" "+temp.getValue());
}
}
---------------------- android培訓、java培訓、期待與您交流! ----------------------