目录
四 Map接口
4.1 put(K key,V value)
4.2 clear()
4.3 containsKey(Object key)
4.4 containsValue(Object value)
4.5 entrySet()
4.6 get(Object key)
4.7 isEmpty()
4.8 keySet()
4.9 values()
4.10 putAll(Map m)
4.11 remove(Object key)
四 Map接口
以上的 Collection 中,每次操作的都是一个对象,如果现在假设要操作一对对象,则就必须使用 Map 了,类似于以 下一种情况:
· 张三 123456
· 李四 234567
Map集合中存储的是一个个键对值(key-value)数据,而且Map集合中的键(key)不可以重复。
那么保存类似于键对值这样信息的时候使用 Collection 就不那么方便,所以要使用 Map 接口。里面的所有内容都按照 key-value 的形式保存,也称为二元偶对象。
此接口定义如下:
public interface Map <K,V>
此接口与 Collection 接口没有任何的关系,是第二大的集合操作接口。此接口常用方法如下:
Map 本身是一个接口,所以一般会使用以下的几个子类:HashMap、TreeMap、Hashtable
所以接下来我们使用Map的子类HashMap来演示一下这些方法:
4.1 put(K key,V value)
方法名称:V put(K key,V value)
在API中描述:将指定的值与此映射中的指定键相关联(可选操作)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
//put(K key,V value):通俗的来讲就是向集合中增加内容
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
Set<Integer> set = data.keySet(); //获取到集合中key值
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer next = iterator.next();
System.out.println(next+"->"+data.get(next));//data.get(next)通过键值来获取他的value值
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57168:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
1001->张三
1002->李四
1003->王五
1004->马六
Process finished with exit code 0
4.2 clear()
方法名称:void clear()
在API中描述:从此映射中删除所有映射(可选操作)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
//put(K key,V value):通俗的来讲就是向集合中增加内容
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
//清空 Map 集合中的内容
data.clear();
Set<Integer> set = data.keySet(); //获取到集合中key值
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer next = iterator.next();
System.out.println(next+"->"+data.get(next));//data.get(next)通过键值来获取他的value值
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57311:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
Process finished with exit code 0
4.3 containsKey(Object key)
方法名称:boolean containsKey(Object key)
在API中描述:如果此映射包含指定键的映射,则返回 true
import java.util.HashMap;
import java.util.Map;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
//判断集合中是否存在指定的 key-1004
boolean b1 = data.containsKey(1004);
//判断集合中是否存在指定的 key-1005
boolean b2 = data.containsKey(1005);
System.out.println(b1);
System.out.println(b2);
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57388:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
true
false
Process finished with exit code 0
4.4 containsValue(Object value)
方法名称:boolean containsValue(Object value)
在API中描述:如果此映射将一个或多个键映射到指定值,则返回 true
。
import java.util.HashMap;
import java.util.Map;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
//判断集合中是否存在指定的 Value-张三
boolean b1 = data.containsValue("张三");
//判断集合中是否存在指定的 Value-麻子
boolean b2 = data.containsValue("麻子");
System.out.println(b1);
System.out.println(b2);
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57457:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
true
false
Process finished with exit code 0
4.5 entrySet()
方法名称:Set<Map.Enter<K,V>> entrySet()
在API中描述:返回此映射中包含的映射的Set
视图
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
//entrySet():将 Map 接口变为 Set 集合
Set<Map.Entry<Integer, String>> entries = data.entrySet();
//我们将集合遍历的时候没有去key值,再用key进行遍历。说明成功转换为set集合
Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57574:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
1001=张三
1002=李四
1003=王五
1004=马六
Process finished with exit code 0
4.6 get(Object key)
方法名称:V get(Object key)
在API中描述:返回指定键映射到的值,如果此映射不包含键的映射,则返回 null
。
import java.util.HashMap;
import java.util.Map;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
// get()根据 key 找到其对应的 value
String s = data.get(1003);
System.out.println(s);
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57657:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
王五
Process finished with exit code 0
4.7 isEmpty()
方法名称:boolean isEmpty()
在API中描述:如果此映射不包含键 - 值映射,则返回 true
import java.util.HashMap;
import java.util.Map;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
Map<Integer,String> data1 = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
// isEmpty()判断集合是否为空
boolean s1 = data.isEmpty();
boolean s2 = data1.isEmpty();
System.out.println(s1);
System.out.println(s2);
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57725:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
false
true
Process finished with exit code 0
4.8 keySet()
方法名称:Set keySet()
在API中描述:返回此映射中包含的键的Set
视图。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
// keySet():将全部的 key 变为 Set 集合
Set<Integer> s = data.keySet();
for (Integer a:s) {
System.out.println(a);
}
}
}
打印结果
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57786:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
1001
1002
1003
1004
Process finished with exit code 0
4.9 values()
方法名称:Collection values()
在API中描述:返回此映射中包含的值的Collection视图
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
// values():将全部的 value 变为 Collection 集合
Collection<String> values = data.values();
for (String a:values) {
System.out.println(a);
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=57845:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
张三
李四
王五
马六
Process finished with exit code 0
4.10 putAll(Map<?extends K,?extends V> m)
方法名称:void putAll(Map<?extends K,?extends V> m)
在API中描述:将指定映射中的所有映射复制到此映射(可选操作)。
import java.util.*;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
Map<Integer,String> data1 = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
data1.put(2001,"床前明月光");
data1.put(2002,"疑是地上霜");
data1.put(2003,"举头望明月");
data1.put(2004,"低头思故乡");
// putAll(Map<? extends K,? extends V> m):增加一组集合
data.putAll(data1);
Set<Integer> set = data.keySet();
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer a = iterator.next();
System.out.println(a+"->"+data.get(a));
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=58014:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
2001->床前明月光
2002->疑是地上霜
2003->举头望明月
2004->低头思故乡
1001->张三
1002->李四
1003->王五
1004->马六
Process finished with exit code 0
4.11 remove(Object key)
方法名称:V remove(Object key)
在API中描述:如果存在,则从该映射中移除键的映射(可选操作)
import java.util.*;
public class Text1 {
public static void main(String[] args) {
Map<Integer,String> data = new HashMap<>();
data.put(1001,"张三");
data.put(1002,"李四");
data.put(1003,"王五");
data.put(1004,"马六");
// remove() :根据 key 删除内容
data.remove(1001);
Set<Integer> set = data.keySet();
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer a = iterator.next();
System.out.println(a+"->"+data.get(a));
}
}
}
打印结果:
"C:\Program Files\Java\jdk-11.0.6\bin\java.exe" "-javaagent:E:\java IDEA\idea\ideaIU-2020.1.4.win\lib\idea_rt.jar=58077:E:\java IDEA\idea\ideaIU-2020.1.4.win\bin" -Dfile.encoding=UTF-8 -classpath "E:\java IDEA\java\out\production\until" com.java.Demo3.Text1
1002->李四
1003->王五
1004->马六
Process finished with exit code 0