一、Map方法
import java.util.HashMap;
import java.util.Map;
public class Demo01 {
public static void main(String[] args) {
show01();
show02();
show03();
show04(); }
private static void show04() {
Map<String,Integer> map3 = new HashMap<>();
map3.put("董",18);
map3.put("皓",16);
map3.put("宇",15);
boolean m = map3.containsKey("皓");
boolean m1= map3.containsKey("帅");
System.out.println(m);//true
System.out.println(m1);//false
}
private static void show03() {
Map<String,Integer> map2 = new HashMap<>();
map2.put("董",18);
map2.put("皓",16);
map2.put("宇",15);
Integer m = map2.get("皓");
System.out.println(m);//16
}
private static void show02() {
Map<String,Integer> map1 = new HashMap<>();
map1.put("董",18);
map1.put("皓",16);
map1.put("宇",15);
Integer m = map1.remove("宇");
System.out.println(m);//15
}
private static void show01(){
Map<String,String> map = new HashMap<>();
String m1 = map.put("董","皓");
String m2 = map.put("董","宇");
System.out.println(m1);//null
System.out.println(m2);//返回的是被替换的值:皓
System.out.println(map);//{董=宇}
}
}
Map集合遍历的两种方式
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo02 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("董",18);
map.put("皓",16);
map.put("宇",15);
//1.先用keySet把Key值取出来,然后放在set集合中
Set<String> set = map.keySet();
//2.遍历set集合获取每一个key
for (String name : set) {
//3.用get()找到value
Integer value = map.get(name);
System.out.println(name+"="+value);
}
System.out.println("======================");
//用第二种方法来遍历,entrySet方法。
Set<Map.Entry<String, Integer>> ent1 = map.entrySet();
for (Map.Entry<String, Integer> entry : ent1) {
String name = entry.getKey();
Integer values = entry.getValue();
System.out.println(name+"="+values);
}
}
}
二、HashMap存储自定义类型键值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo03 {
public static void main(String[] args) {
show01();
}
private static void show01(){
HashMap<Person, String> map = new HashMap<>();
map.put(new Person("董",18),"益阳");
map.put(new Person("董",19),"株洲");
map.put(new Person("董",20),"深圳");
map.put(new Person("董",18),"地球");
Set<Map.Entry<Person, String>> set = map.entrySet();
for (Map.Entry<Person, String> entry : set) {
Person key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"="+value);
//如果在person类里面添加了equals()和hashCode()方法后,会出现⬇️
//Person{name='董', age=18}=地球
//Person{name='董', age=19}=株洲
//Person{name='董', age=20}=深圳
}
}
}
三、LinkedHashMap
HashMap key值不允许重复,并且无序,values允许重复。
LinkedHashMap key值不允许重复,有序
四、Hashtable
不能存储空值和空键。
五、作业:计算一个字符串中每个字符出现的次数
import java.util.HashMap;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
//1.创建一个HashMap的集合,Key是字符串的字符,Values是字符的个数
HashMap<Character, Integer> map = new HashMap<>();
//2.遍历字符串获取每一个字符
for (char c : str.toCharArray()) {
//3.判断key是否存在
if(map.containsKey(c)){
//存在的话
Integer value = map.get(c);
value++;
map.put(c,value);
}else{
map.put(c,1);
}
}
//4.遍历Map输出结果
for (Character key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key+"="+value);
}
}
}