实现Map接口的类用来存储 键--值 对。
Map接口的实现类由hashMap和TreeMap等。
Map类中存储的 键 - 值 对通过键来标识,所以键值不能重复。
一个映射不能包含重复的键;每个键最多只能映射到一个值。键最多只包含一个null,而值可以有多个null。
Set keys=map.keySet()
Collections values=map.values();
Set kvs=map.entrySet();
//kvs内容为Map.Entry的集合
Map接口中常用的方法:
int size()
boolean isEmpty()
boolean containsKey(Object key)
boolean containsValue(Object value)
get(Object key)
null
。 remove(Object key)
void clear()
Set<K> keySet()
Set
视图。Collection<V> values()
Collection
视图Set<Map.Entry<K,V>> entrySet()
Set
视图。boolean equals(Object o)
int hashCode()
在使用由HashMap类实现的Map集合时,需要重写作为主键对象类的hashCode()方法,在重写hashCode()方法时,有以下两条基本原则:
(1)不唯一原则:不必为每个对象生成一个唯一的哈希码,只要通过hashCode方法生成的哈希码能够利用get()方法得到利用put()方法添加的映射关系就可以。
(2)分散原则:生成哈希码的算法应尽量使哈希码的值分散一些,不要很多哈希码值都集中在一个范围内,这样有利于提高由HashMap类实现的Map集合的性能。
方法:
public int size()
public boolean isEmpty()
public V get(Object key)
null
。 public V put(K key, V value)
public void putAll(Map<? extends K,? extends V> m)
public V remove(Object key)
public void clear()
public Set<K> keySet()
Set
视图。public Collection<V> values()
Collection
视图。public Set<Map.Entry<K,V>> entrySet()
Set
视图。public class HashMapTest{ public void go(){ Map<String, String> map=new Hash Map<String, String> (); map.put("Jack","13000001111"); map.put("Mary","13111110000"); map.put("Tom","13333332222"); map.put("Jack","13800008888"); //覆盖掉第一个值 System.out.println(map); System.out.println("是否有Mary的电话号码:"+map.containsKey("Mary")); String Code=map.get("Tom"); System.out.println("Tom的电话是:"+Code); map.remove("Tom"); //删除Tom的记录 System.out.println(map); Set<String> nameSet= map.keySet(); System.out.println(nameSet); Collection <String> telColl=map.values(); System.out.println(telColl); Set entrySet=map.entrySet(); System.out.println(entrySet); }public static void main(String[] argvs){
new HashMapTest().go();
}
}
原文:http://blog.csdn.net/cxy782255346/article/details/21376503