在做leetcode题目的时候,经常会用到哈希表,但是其常用方法的名字老是记不清楚,在这里我先总结一下HashMap的常用方法。我的学习方法是在了解一个知识点之前先学会用它,所以第一篇关于HashMap的博客以方法为主。
目录
判断Map中是否有键值Key containsKey(Key)
判断是否含有Value containsValue(Value)
getOrDefault(key, defaultValue)
添加键值对 put(key,value)
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
System.out.println(map);
}
}
//输出
//{1=abc, 2=aaa}
根据Key值获取Value值 get(Key)
如果没有该键值,则返回NULL
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
System.out.println(map.get(1));
}
}
//输出
//abc
判断Map中是否有键值Key containsKey(Key)
如果没有该键值,则返回NULL
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
System.out.println(map.containsKey(1));
System.out.println(map.containsKey(3));
}
}
//输出
//true
//false
判断是否含有Value containsValue(Value)
有返回true,无返回false
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
System.out.println(map.containsValue("abc"));
System.out.println(map.containsValue(""));
}
}
//输出
//true
//false
更换键值为Key的Value
有2种方法, replace(Key, newValue) 或者put(Key, newValue)
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
map.replace(1,"bbb");
map.put(2,"ccc");
System.out.println(map.get(1));
System.out.println(map.get(2));
}
}
//输出
//bbb
//ccc
删除键值为Key的Value remove(Key)
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"abc");
map.put(2,"aaa");
map.remove(1);
System.out.println(map.get(1));
}
}
//输出
//null
判断为不为空 isEmpty()
空为true,不空为false
添加另一个同一类型的map下的所有键值对
相同的键的value会被之后的替代
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map1 = new HashMap<>();
Map<Integer,String> map2 = new HashMap<>();
map1.put(1,"abc");
map1.put(2,"bbb");
map2.put(1,"aaa");
map2.put(3,"ccc");
map2.putAll(map1);
System.out.println(map2);
}
}
//输出
//{1=abc, 2=bbb, 3=ccc}
删除这个key和value的键值对
如果删除的键值对不存在,返回false,否则删除键值对并返回true
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map1 = new HashMap<>();
Map<Integer,String> map2 = new HashMap<>();
map1.put(1,"abc");
map1.put(2,"bbb");
System.out.println(map1);
map1.remove(1,"abc");
System.out.println(map1);
}
}
//输出
//{1=abc, 2=bbb}
//{2=bbb}
putIfAbsent(Key, Value)
如果当前 Map
不存在键 key 或者该 key 关联的值为 null
,那么就执行 put(key, value)
;否则,便不执行 put
操作:
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map1 = new HashMap<>();
Map<Integer,String> map2 = new HashMap<>();
map1.put(1,"abc");
map1.put(2,"bbb");
map1.putIfAbsent(2,"ccc"); //不执行put
map1.putIfAbsent(3,"ccc");
System.out.println(map1);
map1.remove(1,"abc");
map1.putIfAbsent(1,"aaa");
System.out.println(map1);
}
}
//{1=abc, 2=bbb, 3=ccc}
//{1=aaa, 2=bbb, 3=ccc}
getOrDefault(key, defaultValue)
如果Map中不存在该键值,则返回默认Value,存在键值返回该键值的Value.
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map1 = new HashMap<>();
Map<Integer,String> map2 = new HashMap<>();
map1.put(1,"abc");
map1.put(2,"bbb");
System.out.println(map1.getOrDefault(3,"ccc"));//因为没有键值3,所以返回默认值ccc
System.out.println(map1.getOrDefault(2,"ccc"));//返回键值为2的value bbb
}
}
//ccc
//bbb