您的位置:首页 > 职场人生

黑马程序员_Java集合-Map<K,V>接口

2011-11-23 14:39 531 查看
----------------------
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
ace3
");       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培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息