目录

 

四 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 能作为rest接口的入参吗 map接口中的方法_map 能作为rest接口的入参吗

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