1.偶對(duì)象保存:Map接口
偶對(duì)象指的是一對(duì)對(duì)象,即兩個(gè)對(duì)象要同時(shí)保存鹉究。這兩個(gè)對(duì)象是按照key=value 的形式進(jìn)行定義的宇立,即可通過key找到相應(yīng)的value數(shù)據(jù)。
Map接口的主要操作方法
No | 方法名稱 | 描述 |
---|---|---|
1 | public V put(K key, V value) | 向集合中保存數(shù)據(jù) |
2 | public V get(Obeject key) | 通過指定的key取得對(duì)應(yīng)的value |
3 | public Set<K>keySet() | 將Map中的所以key以Set集合的方式返回 |
4 | public Set<Map.Entry<K,V>>entrySet() | 將Map集合變?yōu)镾et集合 |
在Map接口中有兩個(gè)常用的子類HashMap和Hashtable
1.1 HashMap
HashMap是Map接口中使用最多的一個(gè)子類自赔,子類定義如下
public class HsahMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>,Cloneable,Serializable
例子:Map方法使用
import java.util.HashMap; import java.util.Map; public class test{ public static void main(String[] args) { Map <Integer,String> map = new HashMap<Integer,String>(); map.put(8, "張三"); map.put(null, "李四"); map.put(30, "王五"); map.put(6, "趙六"); map.put(25, "張三"); System.out.println(map.get(8)); System.out.println(map.get(null)); } }
程序運(yùn)行結(jié)果:
張三
李四
Map和Collection在操作上的不同:
Collection接口設(shè)置完內(nèi)容的目的是為了輸出
Map接口設(shè)置完的目的是為了查找
例:取得全部key妈嘹,全部的key通過set集合返回
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class test{ public static void main(String[] args) { Map <Integer,String> map = new HashMap<Integer,String>(); map.put(8, "張三"); map.put(null, "李四"); map.put(30, "王五"); map.put(6, "趙六"); map.put(25, "張三"); Set<Integer>set = map.keySet(); Iterator <Integer>iter = set.iterator(); while(iter.hasNext()){ Integer key =iter.next(); System.out.println(key+"---->"+map.get(key)); } } }
程序運(yùn)行結(jié)果:
null---->李四
6---->趙六
8---->張三
25---->張三
30---->王五
1.2 Hashtable
Hashtable不能設(shè)置NULL
HashMap和Hashtable的區(qū)別
No | 區(qū)別 | HashMap | Hashtable |
---|---|---|---|
1 | 推出時(shí)間 | JDK1.2 | JDK1.0 |
2 | 性能 | 采用異步處理方式,性能更高 | 采用同步處理方式绍妨,性能相對(duì)較低 |
3 | 安全性 | 非線程安全 | 線程安全 |
4 | 設(shè)置null | 允許將key或value設(shè)置為null | 不允許出現(xiàn)null否則出現(xiàn)空指針異常 |
關(guān)于Map集合的輸出問題
public static interface Map.Entry<K,V>
這是一個(gè)在Map接口中使用static定義的一個(gè)內(nèi)部接口
在Map.Entry內(nèi)部接口中有兩個(gè)常用方法
取得當(dāng)前的key:public K getKey();
取得當(dāng)前的value:public V getValue();
Map使用使用Iterator輸出的操作步驟
1使用Map接口中的entrySet()方法润脸,將Map集合變?yōu)镾et集合
2.取得了Set接口實(shí)例后就可以利用iterator()方法取得Iterator的實(shí)例化對(duì)象
3.使用Iterator迭代找到每一個(gè)Map.Entry對(duì)象,并進(jìn)行key和value的分離
例
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class test{ public static void main(String[] args) { Map<Integer,String>map=new HashMap<Integer,String>(); map.put(3,"hehe"); map.put(4,"haha"); map.put(20,"niebi"); Set<Map.Entry<Integer,String>>set=map.entrySet(); Iterator<Map.Entry<Integer,String>> iter=set.iterator(); while(iter.hasNext()){ Map.Entry<Integer, String> me =iter.next(); System.out.println(me.getKey()+" "+me.getValue()); } } }