Map接口 与 Collection 接口没有任何的关系,是第二大的集合操作接口。
Map 本身是一个接口,所以一般会使用以下的几个子类:HashMap、TreeMap、Hashtable
HashMap 与 与 Hashtable 的区别
No. | 区别点 | HashMap | Hashtable |
1 | 推出时间 | JDK1.2推出的新的操作类 | JDK1.推出的旧的操作类 |
2 | 性能 | 异步处理,性能较高 | 同步处理,性能较低 |
3 | null | 允许设置为null | 不能设置,否则将出现空指针异常 |
排序的子类:TreeMap
TreeMap 子类是允许 key 进行排序的操作子类,其本身在操作的时候将按照 key 进行排序,另外,key 中的内容可以为任意的对象,但是要求对象所在的类必须实现 Comparable 接口。
常用方法
V put(K key,V value):向集合中增加内容
V get(Object key) :根据 key 找到其对应的 value
package lesson4_3;
import java.util.HashMap;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
System.out.println(data.get("k3"));
}
}
运行结果: 谁知盘中餐
boolean isEmpty() :判断是否为空
package lesson4_3;
import java.util.HashMap;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
boolean empty = data.isEmpty();
System.out.println(empty);
}
}
运行结果:false
V remove(Object key) :根据 key 删除内容
package lesson4_3;
import java.util.HashMap;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
String k4 = data.remove("k4");
System.out.println(k4);
System.out.println(data.get("k4"));
}
}
运行结果:
粒粒皆辛苦
null
boolean containsKey(Object key) :判断集合中是否存在指定的 key
boolean containsValue(Object value) :判断集合中是否存在指定的 value
package lesson4_3;
import java.util.HashMap;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
boolean k2 = data.containsKey("k2");
boolean value = data.containsValue("12345");
System.out.println(k2);
System.out.println(value);
}
}
运行结果:
true
false
Set<K> keySet() :将全部的 key 变为 Set 集合
Collection<V> values() :将全部的 value 变为 Collection 集合
package lesson4_3;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
Set<String> set = data.keySet();
for (String key : set) {
System.out.println(key);
}
System.out.println("---------------------");
Collection<String> values = data.values();
for (String value : values) {
System.out.println(value);
}
}
}
运行结果:
k1
k2
k3
k4
---------------------
锄禾日当午
汗滴禾下土
谁知盘中餐
粒粒皆辛苦
void clear() :清空 Map 集合中的内容
package lesson4_3;
import java.util.HashMap;
import java.util.Set;
public class Demo12 {
public static void main(String[] args) {
HashMap<String,String> data = new HashMap<>();
data.put("k1","锄禾日当午");
data.put("k2","汗滴禾下土");
data.put("k3","谁知盘中餐");
data.put("k4","粒粒皆辛苦");
System.out.println("清空前");
Set<String> set = data.keySet();
for (String key : set) {
System.out.println(key+":"+data.get(key));
}
System.out.println("------------------");
System.out.println("清空后");
data.clear();
Set<String> set2 = data.keySet();
for (String key : set2) {
System.out.println(key+":"+data.get(key));
}
}
}
运行结果:
清空前
k1:锄禾日当午
k2:汗滴禾下土
k3:谁知盘中餐
k4:粒粒皆辛苦
------------------
清空后