轉自
http://www.java265.com/JavaCourse/202206/3748.html
如果你是初學者,還在為學習map集合而苦惱時,筆者建議你仔細閱讀以下文章,以下文章將助你徹底了解map集合
下文筆者將簡明扼要的講述map集合的簡介說明,如下所示
Map是一個介面,它具有以下特點: 1.Map中的鍵是無序的,并且鍵是不重復的,沒有索引,map中的值可以重復 2.Map集合中的鍵和值都可以為null 3.Map集合中后放入的鍵值會替換前面相同鍵的值 Map常見的實作類有以下三種 HashMap: 元素根據鍵是無序的 不重復的 無索引的 而值是可以重復的(與Map體系一致) LinkedHashMap: 元素根據鍵是有序的,鍵不重復的,無索引的,值是可以重復的 TreeMap: 元素根據鍵是排序的,鍵不重復的,無索引的,值是可以重復的
Map集合實作類的示例分享
package com.java265.other;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
public class TestMap {
/**
* java265.com Map實作類的功能簡介說明
*/
public static void main(String[] args) {
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new LinkedHashMap<>();
Map<String, String> map3 = new TreeMap<>();
map1.put("a", "java265.com-1");
map1.put("c", "java265.com-2");
map1.put("b", "java265.com-3");
map2.put("a", "java265.com-1");
map2.put("c", "java265.com-2");
map2.put("b", "java265.com-3");
map3.put("a", "java265.com-1");
map3.put("c", "java265.com-2");
map3.put("b", "java265.com-3");
map3.put("b", "java265.com-4");
System.out.println("map1:" + map1);
System.out.println("map2:" + map2);
System.out.println("map3:" + map3);
}
}
-----運行以上代碼,將輸出以下資訊------
map1:{a=java265.com-1, b=java265.com-3, c=java265.com-2}
map2:{a=java265.com-1, c=java265.com-2, b=java265.com-3}
map3:{a=java265.com-1, b=java265.com-4, c=java265.com-2}
從以上代碼,我們可以得出 map中LinkedHashMap是有順序的 并且map都不可插入重復的鍵值 但是我們發現TreeMap的排序有些詭異,那么TreeMap的排序是一個什么樣的規則呢? 下文筆者將一一道來,如下所示
TreeMap
TreeMap集合的排序是默認對鍵升序排列 當然我們也可以自定義排序規則,如下所示 1.類實作Comparable介面,重寫比較規則 2.集合自定義Comparator比較器物件,重寫比較規則
自定義排序規則
User類:
public class User implements Comparable<User>{
private String name;
private int age;
@Override
public int compareTo(User o) {
return o.getAge()-this.getAge();
}
/*此處省略 get set方法的撰寫*/
Map<User,String > User = new TreeMap<>();
User.put(new User("毛四",9000),"Java程式員");
User.put(new User("劉暢",32000),"python程式員");
User.put(new User("柳蔭",6000),"清潔工");
System.out.println(User);
集合自定義Comparator比較器物件:
Map<User,String > User = new TreeMap<>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o2.getSalary()-o1.getSalary();
}
});
User.put(new User("毛四",9000),"Java程式員");
User.put(new User("劉暢",32000),"python程式員");
User.put(new User("柳蔭",6000),"清潔工");
System.out.println(User);
Map集合常使用的API
Map<String ,Integer> maps = new HashMap<>();
//1、添加元素
maps.put("小敏",18);
maps.put("阿香",19);
maps.put("曉東",20);
System.out.println(maps);
System.out.println("-----------------------------");
//2、根據鍵key洗掉鍵值對key和value
maps.remove("阿香");
System.out.println(maps);
System.out.println("-----------------------------");
//3、清除Map集合中的所有元素
maps.clear();
System.out.println(maps);
System.out.println("-----------------------------");
//4、判斷Map集合中是否包含此key
System.out.println(maps.containsKey("小敏"));
System.out.println(maps.containsKey("曉東"));
System.out.println("-----------------------------");
//5、判斷Map集合中是否包含此value
System.out.println(maps.containsValue(30));
System.out.println(maps.containsValue(19));
System.out.println("-----------------------------");
//6、判斷Map集合是否為空
System.out.println(maps.isEmpty());
System.out.println("-----------------------------");
//7、獲取Map集合中元素個數
System.out.println(maps.size());
System.out.println("-----------------------------");
//8、獲取集合中所有的鍵
maps.put("秋紅",18);
maps.put("黃菲",19);
Set<String> key = maps.keySet();//將所有鍵儲存在set集合中
System.out.println(key);
System.out.println("-----------------------------");
//9、獲取集合中的所有值
Collection<Integer> values = maps.values();
System.out.println(values);
System.out.println("-----------------------------");
遍歷Map集合
使用鍵查找值
實作思路:
1.獲取keyset集合
2.foreach判斷,并且使用get方法獲取value值
Map<String ,Integer> maps = new HashMap<>();
maps.put("小敏",18);
maps.put("阿香",19);
maps.put("曉東",20);
System.out.println(maps);
Set<String> key = maps.keySet();
for (String k:key
) {
System.out.println(maps.get(k));
}
獲取map的鍵值對
實作思路:
使用getkey()和getvalue()即可獲取鍵值對集合
例:
Map<String ,Integer> maps = new HashMap<>();
maps.put("小敏",18);
maps.put("阿香",19);
maps.put("曉東",20);
System.out.println(maps);
Set<Map.Entry<String, Integer>> set = maps.entrySet();
System.out.println(set);
for (Map.Entry<String, Integer> s :
set) {
System.out.println(s.getKey()+"->"+s.getValue());
}
使用Lambda運算式獲取map集合資料
Map<String ,Integer> maps = new HashMap<>();
maps.put("小敏",18);
maps.put("阿香",19);
maps.put("曉東",20);
System.out.println(maps);
maps.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String k, Integer v) {
System.out.println(k+"->"+v);
}
});
//Lambda運算式簡化map集合資料獲取
maps.forEach((k,v)-> System.out.println(k+"->"+v) );
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492422.html
標籤:Java
上一篇:java之List集合入門必備篇
