JAVA Map在java中的应用

Map的概述:
/*
* 需求:实现学号和姓名这样有对应关系的数据存储
* 为了体现这种有对应关系的数据 Java为我们提供了一种专门用于存储对应关系的集合,我们称之为Map
* Map:将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值
* Map和Collecton的区别?
*           Map:一个双列集合 常用于处理有对应关系的数据 key是不可以重复的 我们也称之为夫妻对集合
*           Collection:单列集合 Collection有不同的子体系 有的允许重复 有索引 有序 有的不允许重复并且无序 那么
*           我们也称之为单身汉集合
* 一对一:一个学号对应一个姓名
* */
public class MapDemo {
    public static void main(String[] args) {

    }
}

Map中的常用函数:
import java.util.HashMap;
import java.util.Map;

/*
*Map的常用功能 相对简单的一些功能
* 映射功能:
* V put(K key, V value)
将key映射到value,如果key存在,就覆盖value,并返回原来的value值。

* 获取功能:
* V get(Object key)
返回到指定键所映射的值,或 null如果此映射包含该键的映射。
int size()
返回此地图中键值映射的数量。
Set<K> keySet()
返回此地图中包含的键的Set视图。

* 判断功能:
* boolean containsKey(Object key)
如果此映射包含指定键的映射,则返回 true 。
boolean containsValue(Object value)
如果此地图将一个或多个键映射到指定的值,则返回 true 。
boolean isEmpty()
如果此地图不包含键值映射,则返回 true 。

 * 删除功能:void clear()
从该地图中删除所有的映射(可选操作)。
 V remove(Object key)
如果存在(从可选的操作),从该地图中删除一个键的映射,并返回key所对应的值,如果没有删除成功就返回null。
遍历功能:
Set<Map.Entry<K,V>> entrySet()
返回此地图中包含的映射的Set视图。
  */
public class MapDemo2 {
    public static void main(String[] args) {
        // 获取Map对象
        Map<String,String> map = new HashMap<String,String>();
        //V put(K key, V value)
        //将指定的值与该映射中的指定键相关联(可选操作)。
        map.put("201758503119","于振涛");
        map.put("201758503120","李文奇");
        System.out.println(map);
        //* boolean containsKey(Object key)
        System.out.println(map.containsKey("201758503119"));
        //boolean containsValue(Object value)
        System.out.println(map.containsValue("于振涛"));
        //boolean isEmpty()
        System.out.println(map.isEmpty());
        //int size()
        System.out.println(map.size());
        //V get(Object key)
        System.out.println(map.get("201758503119"));
        System.out.println(map);
          // V remove(Object key)
        System.out.println(map.remove("201758503119"));
        System.out.println(map);
        //void clear()
        map.clear();
    }
}
keySet() 和 values()的测试:
import java.util.*;

/*
 keySet() 和 values()的测试
* Collection<V> values()
返回此地图中包含的值的Collection视图。
Set<K> keySet()
返回此地图中包含的键的Set视图。  */
public class MapDemo3 {
    public static void main(String[] args) {
        // 获取Map对象
        Map<String,String> map = new HashMap<String,String>();
        //V put(K key, V value)
        //将指定的值与该映射中的指定键相关联(可选操作)。
        map.put("201758503118","王永衡");
        map.put("201758503119","于振涛");
        map.put("201758503120","李文奇");
        //Set<K> keySet()
        Set<String> keys = map.keySet(); //这里是存储所有的key 因为key不重复 所以以set的形式返回
        for (String key:keys
             ) {
            System.out.println(key);
        }
        //Collection<V> values()
        Collection<String> values = map.values();
        for (String value:values
             ) {
            System.out.println(value);
        }

    }
}

Map的第一种遍历方式:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
* 
*             首先召集所有的Key
*             遍历所有的Key
*             获取每一个key
*             让每一个key去找他自己的value*/
public class MapDemo4 {
    public static void main(String[] args) {
        // 创建map对象
        Map<String,String> map = new HashMap<String,String>();
        //将指定的值与该映射中的指定键相关联(可选操作)。
        map.put("201758503118","王永衡");
        map.put("201758503119","于振涛");
        map.put("201758503120","李文奇");
        //遍历Map对象
        //首先召集所有的丈夫
        Set<String> keys = map.keySet(); //这里是存储所有的key 因为key不重复 所以以set的形式返回
        for (String key:keys
        ) {
            String value = map.get(key);
            System.out.println("学号"+key+"姓名"+value);
        }
    }
}
Map的第二种遍历方式:面向对象的方式 通过Entry对象:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
* 
*  通过结婚证对象来获取丈夫和媳妇
*   //Set<Map.Entry<K,V>> entrySet()
        //返回此地图中包含的映射的Set视图。
* */
public class MapDemo5 {
    public static void main(String[] args) {
        //创建map对象
        Map<String,String> map = new HashMap<String,String>();
        //添加映射关系
        map.put("201758503118","王永衡");
        map.put("201758503119","于振涛");
        map.put("201758503120","李文奇");
        //获取所有结婚证对象
        Set< Map.Entry<String,String>> entrys = map.entrySet();
        //遍历包含了所有结婚证对象的集合
        for(Map.Entry<String,String> entry:entrys)
        {
            //获取每个单独的结婚证对象
            //通过结婚证对象获取丈夫和媳妇
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println("学号"+key+"姓名"+value);
        }
    }
}
使用HashMap存储数据并遍历(字符串作为key):
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*使用HashMap存储数据并遍历(字符串作为key)
* 要去重 方法和hashset一样。*/
public class HashMapDemo {
    public static void main(String[] args) {
        //创建map对象
        HashMap<String,String> hm= new HashMap<String,String>();
        //添加映射关系
        hm.put("201758503118","王永衡");
        hm.put("201758503119","于振涛");
        hm.put("201758503120","李文奇");
        //遍历map对象
        Set<String> keys = hm.keySet();
        for (String key:keys)
        {
            String value = hm.get(key);
            System.out.println(key+"="+value);
        }
    }
}
使用hashmap存储结构并遍历(自定义对象作为key):
import java.util.HashMap;
import java.util.Set;

/*使用hashmap存储结构并遍历(自定义对象作为key)*/
public class HashMapDemo2 {
    public static void main(String[] args) {
        //创建map对象
        HashMap<People,String> hm= new HashMap<People,String>();
        //创建key对象

       People p1 = new People("zhangsan",18);
        People  p2 = new People ("lisi",20);

        //添加映射对象
        hm.put(p1,"201758503119");
        hm.put(p2,"101758503120");
        //遍历map对象
        Set<People> keys = hm.keySet();
        for (People key:keys)
        {
            String value = hm.get(key);
            System.out.println(key+"="+value);
        }
    }
}
public class People{
    String name;
    int age;

    public People(String name,int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

猜你喜欢

转载自blog.csdn.net/yuzhentao123/article/details/88697525