/*
* 獲取功能:
* V get(Object key):根據鍵獲取值
* Set<K> keySet():獲取集合中全部鍵的集合
* Collection<V> values():獲取集合中全部值的集合
*/java
Map<String, String> map = new HashMap<String, String>(); // 建立元素並添加元素 map.put("鄧超", "孫儷"); map.put("黃曉明", "楊穎"); map.put("周杰倫", "蔡依林"); map.put("劉愷威", "楊冪"); // V get(Object key):根據鍵獲取值 System.out.println("get:" + map.get("周杰倫")); System.out.println("get:" + map.get("周杰")); // 返回null System.out.println("----------------------"); // Set<K> keySet():獲取集合中全部鍵的集合 Set<String> set = map.keySet(); for (String key : set) { System.out.println(key); } System.out.println("----------------------"); // Collection<V> values():獲取集合中全部值的集合 Collection<String> con = map.values(); for (String value : con) { System.out.println(value); }
遍歷android
// 遍歷 // 獲取全部的鍵 Set<String> set = map.keySet(); // 遍歷鍵的集合,獲取獲得每個鍵 for (String key : set) { // 根據鍵去找值 String value = map.get(key); System.out.println(key + "---" + value); }
另外一種方式遍歷ide
Set<Map.Entry<String, String>> set = map.entrySet(); // 遍歷鍵值對對象的集合,獲得每個鍵值對對象 for (Map.Entry<String, String> me : set) { // 根據鍵值對對象獲取鍵和值 String key = me.getKey(); String value = me.getValue(); System.out.println(key + "---" + value); }
當數據量大的時候,採用entrySet遍歷key+value的效率要高於keySet(比較效率https://blog.csdn.net/zhangsify/article/details/52966094)spa
//---------------------------------------------------------------------------------------------------------------------.net
/*
* HashMap:是基於哈希表的Map接口實現。
* 哈希表的做用是用來保證鍵的惟一性的。
*
* HashMap<String,String>
* 鍵:String(不容許重複)
* 值:String(容許重複)
*/線程
HashMap<String, String> hm = new HashMap<String, String>(); hm.put("it001", "馬雲"); hm.put("it003", "馬化騰"); hm.put("it004", "喬布斯"); hm.put("it005", "張朝陽"); hm.put("it002", "裘伯君"); // wps hm.put("it001", "比爾蓋茨"); // 遍歷 Set<String> set = hm.keySet(); for (String key : set) { String value = hm.get(key); System.out.println(key + "---" + value); }
結果code
it004---喬布斯 it003---馬化騰 it005---張朝陽 it002---裘伯君 it001---比爾蓋茨
這裏爲何鍵it001有兩個選取最後一個 ,最後一個覆蓋前面一個鍵對象
//================================================================================blog
/*
* LinkedHashMap:是Map接口的哈希表和連接列表實現,具備可預知的迭代順序。
* 由哈希表保證鍵的惟一性
* 由鏈表保證鍵盤的有序(存儲和取出的順序一致)
*/排序
LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>(); // 建立並添加元素 hm.put("2345", "hello"); hm.put("1234", "world"); hm.put("3456", "java"); hm.put("1234", "javaee"); hm.put("3456", "android"); // 遍歷 Set<String> set = hm.keySet(); for (String key : set) { String value = hm.get(key); System.out.println(key + "---" + value); }
TreeMap
TreeMap<Student, String> tm = new TreeMap<Student, String>( new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { // 主要條件 int num = s1.getAge() - s2.getAge(); // 次要條件 int num2 = num == 0 ? s1.getName().compareTo( s2.getName()) : num; return num2; } }); // 建立學生對象 Student s1 = new Student("潘安", 30); Student s2 = new Student("柳下惠", 35); Student s3 = new Student("唐伯虎", 33); Student s4 = new Student("燕青", 32); Student s5 = new Student("唐伯虎", 33); // 存儲元素 tm.put(s1, "宋朝"); tm.put(s2, "元朝"); tm.put(s3, "明朝"); tm.put(s4, "清朝"); tm.put(s5, "漢朝"); // 遍歷 Set<Student> set = tm.keySet(); for (Student key : set) { String value = tm.get(key); System.out.println(key.getName() + "---" + key.getAge() + "---" + value); }
潘安---30---宋朝 燕青---32---清朝 唐伯虎---33---漢朝 柳下惠---35---元朝
//=========================================
HashMap
LinkedHashMap
TreeMap
使用方式