集合框架(Map)

Map集合是以键值对存储对象,将键映射到值,一个映射不能包含重复的键,每个键只能映射到一个值。

Map和Collection的区别:
1:Map是双列参数,Collection是单列参数;
2:Map的键是唯一的,Collection的子系里面只有Set才是唯一的,其他的子系中可以重复;
3:Map集合的数据结构是针对键有效,跟值无关,Collection集合的数据结构是针对元素有效;
举个例子说明:
学校里面,是根据学号来区分不同学生的,知道了学生的学号,就能根据学号获取学生的姓名,学生的姓名可以重复,但学号是不可能重复的,这么来看,学号,学生的姓名和Map集合里面的键和值都是一种映射关系,学号就是键,学生的姓名就是值。

Map集合的功能概述:

添加功能:
V put(K key,V value):添加元素,K是键的类型,V是值的类型,
删除功能:
void clear():移除所有键值对的元素
V remove(Object key):根据键删除对应的值,并把值返回
判断功能:
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
获取功能:
Set<Map.Entry<k,v>> entrySet():
V get(Object key):根据键获取值
Set<k> keySet():获取集合中的所有键的集合
Collection<v> values():获取集合中多有值的集合
int size():获取集合中的键值对的对数

Map集合是接口,它有两个常用的实现类,分别是HashMap和TreeMap.
HashMap:是基于哈希表的Map集合,线程不同步
TreeMap:是基于红黑树的Map集合,它可以对键实现自然排序,或者根据创建映射时提供的Comparator进行排序。

hashMap:

    public static void main(String[] args) {
        //创建HashMap集合对象
        HashMap<String,String> map=new HashMap<String ,String>();   
        //添加元素:public V put(K key, V value)
        //如果是第一次存储,就直接存储元素,然后返回Null
        System.out.println(map.put("001","QQ"));//打印null
        //如果有值,就用新值替换旧值,再把旧值返回
        System.out.println(map.put("001","微信"));//QQ
        System.out.println(map.put("002","QQ"));
        System.out.println(map.put("003","windows"));

        //判断集合是否包含指定的键
        //boolean ContainsKey(Object key)
        System.out.println("ContainsKey="+map.containsKey("001"));
        //判断集合是否为空
        //boolean isEmpty()
        System.out.println("isEmpty="+map.isEmpty());
        //获取集合中键值对的个数
        System.out.println("size="+map.size());
        //根据键获取值:v get(Object key)
        System.out.println("get="+map.get("003"));
        //获取Map集合中的所有键,然后存入set集合
        Set<String> set=map.keySet();
        //遍历键的集合,获取每一个值
        for(String key:set){

            System.out.println("values="+map.get(key));
        }
        //获取集合中所有值的集合:Collection<v> values()
        Collection<String> coll=map.values();

        //获取所有键值对对象的集合
        //Set<Map.Entry<k,v>> entrySet():返回所有键值对的集合
        Set<Map.Entry<String, String>> setmap=map.entrySet();
        //遍历键值对对象集合,得到每一个键值对
        for(Map.Entry<String, String> m:setmap){
            System.out.println(m.getKey()+"==="+m.getValue());
        }

TreeMap排序:

    public static void main(String[] args) {
        //使用元素自身的比较性
        TreeMap<String,String> tm=new TreeMap<String,String>();
        //添加元素
        tm.put("c","嘿嘿");
        tm.put("a","哈哈");
        tm.put("b","呵呵");
        tm.put("d","嘻嘻");

        //遍历集合,查看输出顺序
        Set<Map.Entry<String, String>> set=tm.entrySet();
        for(Map.Entry<String,String> s:set){
            System.out.println(s.getKey()+"==="+s.getValue());
        }
        /*结果:
         *  a===哈哈
            b===呵呵
            c===嘿嘿
            d===嘻嘻
         * 这使用字符串的自然排序
         */ 
    //使用自定义的比较器
    //创建集合对象并创建比较器
            TreeMap<Student,String> tm=new TreeMap<Student,String>(
                new Comparator<Student>(){
                    public int compare(Sudent s1,Student s2){
                        //主要条件
                        int num=s1.getAge()-s2.getAge();
                        //次要条件
                        int num2=num==0:s1.getName().comparaTo(
                                s2.getName()):num;
                                return num2;
                    }
                }
                );
        //创建学生对象
        Student s1=new Student("王小明"17);
        Student s2=new Student("张小明"13);
        Student s3=new Student("李小明"15);
        Student s4=new Student("赵小明"19);

        //往集合中添加元素
        tm.put(s1,"六班");
        tm.put(s4,"四班");
        tm.put(s3,"一班");
        tm.put(s2,"九班");

        //遍历集合
        Set<Map.Entry<Student, String>> set=tm.entrySet();
        for(Map.Entry<Student, String> m:set){
            System.out.println(m.getKey()+"==="+m.getValue());
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值