【Java】集合总结之Collection和Map--Map(3)

map集合

  Map接口时一种双列集合,它的每个元素都包含一个键对象Key和一个值对象Value,键和值对象之间存在一种对应关系,称为映射。

  Map集合常用的方法

方法声明 功能描述

void put(Object key,Object value)

将指定的值与此映射中的指定键关联(可选操作)
Object get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null
boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回true,否则返回false
boolean containsValue(Object Value) 如果此映射将一个或多个键映射到指定值,则返回true
Set keySet() 返回此映射中包含的键的Set视图
Collection<V> values() 返回此映射中包含的值的Collection视图
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图

 

  表中的方法put(Object key,Object value)和get(Object key)分别用来向Map中存入和取出元素;containsKey(Object key)和containsValue(Object Value)方法分别用于判断Map中是否包含某个指定的键或值;keySet()和values()方法分别用来获取Map中所有的键和值。

  Map中常用到的两大实现类,分别是HashMap和TreeMap

常用实现类HashMap

  Map集合的其中一个实现类,存储数据特点:键值对,键不能重复

import java.util.HashMap;
import java.util.Map;

/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建map对象
        Map map = new HashMap();
        //给map对象中存入键值对
        map.put("1", "jack");
        map.put("2", "Rose");
        map.put("3", "Lucy");
        //取出map集合中存入的键值对
        System.out.println("1:"+map.get("1"));
        System.out.println("2:"+map.get("2"));
        System.out.println("3:"+map.get("3"));
        //对键等于3的位置继续存入值
        map.put("3", "Nancy");
        //Map中的键必须是唯一的,不能重复,如果存入相同键,后存入的值会覆盖原有的值
        System.out.println("3:"+map.get("3"));
    }
}

 

执行结果:键和值关联,根据键找到对应,如果存入相同键:键相同,值覆盖

 

  Map集合遍历之方法一:通过遍历键,然后根据键获取值

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建map对象
        Map map = new HashMap();
        //给map对象中存入键值对
        map.put("1", "jack");
        map.put("2", "Rose");
        map.put("3", "Lucy");
        Set keySet = map.keySet();//获取键的集合
        Iterator it = keySet.iterator();//获取键的迭代器对象
        while(it.hasNext()){//判断是否有元素
            Object key = it.next();//通过next()方法获取键
            Object value = map.get(key);//通过键获取对应的值
            System.out.println(key+":"+value);
        }    
    }
}

  执行结果:根据键取出对应的值

 

 

  Map集合遍历之方法二:通过映射关系遍历键和值

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建map对象
        Map map = new HashMap();
        //给map对象中存入键值对
        map.put("1", "jack");
        map.put("2", "Rose");
        map.put("3", "Lucy");
        Set entrySet = map.entrySet();//获取map存入数据的关系存入到Set集合
        Iterator it = entrySet.iterator();//调用迭代器遍历entrySet
        while(it.hasNext()){//判断是否存在值
            Map.Entry entry = (Map.Entry)it.next();//获取集合中键值对映射关系
            Object key = entry.getKey();//获取Entry中的键
            Object value = entry.getValue();//获取Entry中的值
            System.out.println(key+":"+value);
        }
    }
}

  执行结果:遍历效果与方法一一致,只是实现的遍历过程不一样

 

 

  Map集合遍历之方法三:只遍历值

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建map对象
        Map map = new HashMap();
        //给map对象中存入键值对
        map.put("1", "jack");
        map.put("2", "Rose");
        map.put("3", "Lucy");
        Collection values = map.values();//调用values获取集合中的所有值
        Iterator it = values.iterator();//调用迭代器遍历
        while(it.hasNext()){//判断是否有值
            Object value = it.next();//获取值
            System.out.println(value);
        }
    }
}

  执行结果:打印所有集合中的值

 

  

常用实现类TreeMap

   Map集合的另一个实现类TreeMap,存储键值对,其中不允许出现重复键,且存入的键是有序的,TreeMap的底层实现是二叉树,通过二叉树的原理来确保键的唯一性和数据的有序性。

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建map对象
        TreeMap tm = new TreeMap();
        //给tm对象中存入键值对
        tm.put("1", "jack");
        tm.put("2", "Rose");
        tm.put("3", "Lucy");
        Set keySet = tm.keySet();//调用values获取集合中的所有值
        Iterator it = keySet.iterator();//调用迭代器遍历
        while(it.hasNext()){//判断是否有值
            Object key = it.next();//获取值
            System.out.println(key+":"+tm.get(key));
        }
    }
}

执行结果:

 

posted @ 2021-11-06 12:06  小墨儿  阅读(111)  评论(0编辑  收藏  举报