MSIPO技术圈 首页 IT技术 查看内容

集合(下)Map集合的使用

2024-03-25

文章目录


前言

       Map集合没有继承Collection接口,不能像List集合和Set集合那样直接使用Collection接口的方法。Map集合其自身通过以key到value的映射关系实现的集合,也有相应的许多方法。类似与函数,Map中不能包含相同的key,每个key只能映射一个value值,value值可以相同。Map集合是指Map接口以及Map接口的所有实现类。


一、Map接口

        Map接口提供了将key映射到value值的对象。一个映射不能包含重复的key,每个key最多只能映射到一个value值。Map集合中允许值对象(value)是null,而且没有个数限制

        Map接口同样提供了集合的常用方法:

Map接口中的常用方法
方法功能描述
put(K key,V value)向集合中添加指定的key与value的映射关系的对象
containsKey(Object key)如果此映射包含指定key的映射关系,则返回ture值
containsValue(Object value)如果有一个或多个key映射到value值,则返回ture值
get(Object key)如果存在一个指定的key对象,则返回对应的value值,否则返回null值
keySet()返回该集合中的所有key对象形成一个Set集合
values()返回该集合中的所有值形成的Colllection集合
size()返回map集合元素长度int值
remove(Object key,Object values)删除该map集合中的指定元素
replace(Object key,Object values)替换该map元素中的指定元素

        示例代码:

import java.util.*;

public class MapDemo {

    public static void main(String[] args) {
    
        //创建了一个Person类,构造方法为(String ID,String Name),getID(),getName()用于获取
        People p1 = new People("101", "李三");
        People p2 = new People("102", "李四");
        People p3 = new People("103", "王五"); 
        People p4 = new People("104", "赵六");
        People p5 = new People("105", "黄七");

        //以下为HashMap的代码
        Map<String,String> map = new HashMap<>();
        
        map.put(p5.getID(), p5.getName()).
        map.put(p4.getID(), p4.getName());
        map.put(p3.getID(), p3.getName());
        map.put(p2.getID(), p2.getName());
        map.put(p1.getID(), p1.getName());

        //以上是对map集合存放数据
    
        System.out.println("此map集合长度:"+map.size());

        System.out.println("ID为105的人是否存在:"+map.containsKey("105"));

        //使用keySet()方法把key存入Set集合,从而可以使用Set方法中的迭代器
        Set<String> set = map.keySet();
        Iterator<String> iterator = set.iterator();
        
        while (iterator.hasNext()) { //遍历map集合元素
            String id=(String)iterator.next();
            System.out.println("id:"+id+" name:"+map.get(id));
        }


    }
}

         运行结果:

二、Map接口的实现类

        Map接口常用的实现类有HashMapTreeMap。建议使用 HashMap类来实现Map集合。HashMap类实现的Map集合添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行迅速查找;而TreeMap中的映射关系存在一定顺序,如果希望元素排列有序,应该用TreeMap实现Map集合

1.HashMap类

        HashMap类是基于哈希表的Map接口的实现。此实现提供所有可选的映射操纵。允许使用null值和null键,但必须保持键的唯一性。HashMap通过映射关系进行快速查找,但不保证各个元素的排放位置。但是在Java 8之后,HashMap的内部实现进行了优化,使得它能够保持插入顺序。这意味着,当你遍历HashMap的时候,它会按照元素插入的顺序进行输出。

        HashMap类实现Map集合:   

Map<> map = new HashMap<>();

        实例: 

    public static void main(String[] args) {

        People p1 = new People("101", "李三");
        People p2 = new People("102", "李四");
        People p4 = new People("104", "赵六");
        People p5 = new People("105", "黄七");
        People p3 = new People("103", "王五"); 

        //以下为HashMap的代码
        Map<String,String> map = new HashMap<>();
        
        
        map.put(p4.getID(), p4.getName());
        map.put(p3.getID(), p3.getName());
        map.put(p2.getID(), p2.getName());
        map.put(p1.getID(), p1.getName());
        map.put(p5.getID(), p5.getName());

        Set<String> set = map.keySet();
        Iterator<String> iterator = set.iterator();
        
        while (iterator.hasNext()) {
            String id = (String)iterator.next();
            String name = (String)map.get(id);
            System.out.println("id:"+id+" name:"+name);
        }

    }

        输出结果:

 

2.TreeMap类

        TreeMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此,集合中的映射关系具有一定的顺序。但添加、删除和查找映射关系时,不如HashMap效率高。TreeMap不允许键对象为null。

        TreeMap类实现Map接口: 

Map<> map = new TreeMap<>();

        实例: 

import java.util.*;

public class MapDemo {
    public static void main(String[] args) {

        People p1 = new People("101", "李三");
        People p2 = new People("102", "李四");
        People p3 = new People("103", "王五"); 
        People p4 = new People("104", "赵六");
        People p5 = new People("105", "黄七");

        //以下为HashMap的代码
        Map<String,String> map = new TreeMap<>();
        
        map.put(p4.getID(), p4.getName());
        map.put(p3.getID(), p3.getName());
        map.put(p2.getID(), p2.getName());
        map.put(p1.getID(), p1.getName());
        map.put(p5.getID(), p5.getName());

        Set<String> set = map.keySet();
        Iterator<String> iterator = set.iterator();
        
        while (iterator.hasNext()) {
            String id = (String)iterator.next();
            String name = (String)map.get(id);
            System.out.println("id:"+id+" name:"+name);
        }

    }
}

        运行结果:


总结

        以上就是Map集合的相关介绍和简单使用,本文仅仅简单介绍了Map方法,而Map接口提供了大量能使我们快速便捷地处理键与值的函数和方法,有不足或文章错误的地方,欢迎在评论区中指正。

相关阅读

热门文章

    手机版|MSIPO技术圈 皖ICP备19022944号-2

    Copyright © 2024, msipo.com

    返回顶部