重點:在使用Map時注意key-value,key用於檢索value的內容。
在正常情況下,可以不允許重復:在java中分為2中情況,一是內存地址重復,另一個是不同的地址但內容相等。
在使用Map是一定要特別注意,是否允許鍵值相等存儲,在使用IdentityHashMap的鍵是變量時要小心。
在下面的示例中,鍵值為常量,指向同一個內存地址,所以會經過修改后還是保持相同數量的元素。
1 import java.util.IdentityHashMap; 2 import java.util.Map; 3 4 public class Main { 5 public static void main(String[] args) { 6 Map<String, String> m = new IdentityHashMap<String, String>(); 7 m.put("a", "java"); 8 m.put("b", "js"); 9 m.put("c", "php"); 10 System.out.println(m + ",size:" + m.size()); 11 for (String key : m.keySet()) { 12 if (key.equals("c")) { 13 // m.remove("c"); 14 m.put("c", "www"); 15 } 16 // System.out.println("key= " + key + " and value= " + m.get(key)); 17 } 18 System.out.println(m); 19 } 20 }
結果:
{b=js, a=java, c=php},size:3
{b=js, a=java, c=www}
借一張圖,便於讀者理解:
(圖片來自:http://tianya23.blog.51cto.com/1081650/707603)