5月18日集合架构 Map

说明:

首先看到这个图,我在昨天已经开始学习集合中的Collection,今天开始学习Map集合

一.List集合

Map与List、Set接口不同,它是由一系列键值对组成的集合,提供了key到Value的映射。同时它也没有继承Collection。在Map中它保证了key与value之间的一一对应关系。也就是说一个key对应一个value,所以它不能存在相同的key值,当然value值可以相同。

List集合有两个子类,但是我们常用的是HashMap

它的主要方法:

    put();                         放入键和值

    remove();                  移除

    get();                         获取

    containskey();          判断

    Set();    keySet();         获取Map集合中所有的键

1.HashMap

以哈希表数据结构实现,查找对象时通过哈希函数计算其位置,它是为快速查询而设计的,其内部定义了一个hash表数组(Entry[] table),元素会通过哈希转换函数将元素的哈希地址转换成数组中存放的索引,如果有冲突,则使用散列链表的形式将所有相同哈希地址的元素串起来,可能通过查看HashMap.Entry的源码它是一个单链表结构。

下面给大家看个我们以后写代码会用到的例子for循环(三种介绍)

package cn.kgc.Demo04;

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

public class Demo05EntrySet {
    public static void main(String[] args) {
        HashMap<String, Integer> mm = new HashMap<>();
        mm.put("豪豪",25);
        mm.put("福福",23);
        mm.put("龙龙",27);
        mm.put("波波",21);
        mm.put("凡凡",18);
        System.out.println(mm);
        System.out.println("************************");
        //通过mm.entrySet()获取set集合
        Set<Map.Entry<String, Integer>> set = mm.entrySet();
        //通过set集合去使用迭代器
        Iterator<Map.Entry<String, Integer>> iet = set.iterator();
        while(iet.hasNext()){
            System.out.println(iet.next());
        }
        System.out.println("****************");
        Iterator<Map.Entry<String, Integer>> it = set.iterator();
        while(it.hasNext()){
            Map.Entry<String, Integer> en = it.next();//en是一个对象
            Object key = en.getKey();
            Object value = en.getValue();
            System.out.println(key+":"+value);
        }
        //增强型for
        System.out.println("************************");
        for(Map.Entry<String, Integer> set1:mm.entrySet()){
            String key = set1.getKey();
            Integer value = set1.getValue();
            System.out.println(key+":"+value);
        }
    }
}

2.LinkedHashMap

LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。

LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序
     根据链表中元素的顺序可以分为:按插入顺序的链表,和按访问顺序(调用get方法)的链表。默认是按插入顺序排序,如果指定按访问顺序排序,那么调用get方法后,会将这次访问的元素移至链表尾部,不断访问可以形成按访问顺序排序的链表。

注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

由于LinkedHashMap需要维护元素的插入顺序,因此性能略低于HashMap的性能,但在迭代访问Map里的全部元素时将有很好的性能,因为它以链表来维护内部顺序。

原文地址:https://www.cnblogs.com/liurui-bk517/p/10886434.html

时间: 2024-08-28 04:54:08

5月18日集合架构 Map的相关文章

10月18日随笔

1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 #include<cstdio> 6 #include<queue> 7 using namespace std; 8 typedef long long LL; 9 inline int read() 10 { 11 int x=0,f=1;char c=getchar

软考信息系统监理师 2016年3月18日作业

软考信息系统监理师,2016年3月18日作业: 第四章 监理单位的组织建设 1.监理单位的体系建设分为哪3部分? 答:分为业务体系建设.质保体系建设.管理体系建设 2.监理单位监理服务质量管理的方式有2种,哪2种?优缺点是什么? 答:一种是以单位管理为主,一种是以监理项目部自我管理为主. 以单位管理为主的质量管理模式的优点是可以保证单位各个监理项目部按照统一 的要求进行监理,易于控制;缺点是限制了总监理工程师质量控制的积极性,管 理费用大.以监理项目部为主的质量管理模式的优点与缺点正好相反. 3

2015年8月18日,杨学明老师《技术部门的绩效管理提升(研讨会)》在中国科学院下属机构CNNIC成功举办!

2015年8月18日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<技术部门的绩效管理提升(研讨会)>培训课程.杨学明老师分别从研发绩效管理概述.研发绩效的考核与评价管理.标杆企业研发绩效管理及结果的应用.激励和奖金分配等方面进行了讲解和研讨.培训过程中,杨学明老师以阿里巴巴.腾讯.华为等企业的互联网产品规划的真实案例为主线,充分发挥学员在学习过程中的智慧,进行了深入的研讨和演练.并给大家分享了来自华为.腾讯.阿里巴巴的一些绩效和激励案例,大家认为受益匪浅.

冲刺阶段(二)第五天 5月18日

昨天:利用前几天学习的知识实现铁大助手中图片切换的功能. 今天:团队测试 困难:不能在所有Android版本模式下运行本软件,有的不能兼容. 冲刺阶段(二)第五天 5月18日,布布扣,bubuko.com

软考信息系统监理师,2016年3月18日作业

软考信息系统监理师,2016年3月18日作业: 第四章 监理单位的组织建设1.监理单位的体系建设分为哪3部分?2.监理单位监理服务质量管理的方式有2种,哪2种?优缺点是什么?3.监理服务质量的控制方式,按照时间可以分为哪3种?按照控制主体分为什么?按照评价方式分为什么?4.监理服务质量控制的内容包括哪些?5.监理单位遵照什么步骤建立和完善质量保证体系?6.监理单位的权利中,应按照""的原则,开展监理工作?7.监理单位的行为准则是什么?8.在行为准则中,什么是公正,什么是独立,什么是科学

谷歌CEO 宣布Google I/O 2016大会将于2016年5月18日Mountain View举办

谷歌CEO Sundar Pichai今日在他的官方Twitter上宣布,Google I/O 2016大会将于2016年5月18日在加州Mountain View拉开帷幕. 这是谷歌一年一度最大的开发者大会.在刚刚过去的2015年,Google I/O大会被评为2015年最受欢迎的开发者大会,位列苹果,微软等各大开发公司大会之首. 你可以通过以下链接订阅Google I/O 2016的新闻已经该大会官方内容. 此外,如果你想体验以下2015年的Google I/O大会,可以观看如下Google

[NOIP集训]10月18日

今天的文件夹:10月18日.zip 今天脑子转不起来,想不出来动规了. Orz @张翰文学神 T1:快排,然后求连续数字的长度,简单判断即可. T2~T4:容我再想两天... T2原题: 题2. 养zsc(pig.pas/c/cpp) [题目描述] 你有一个zsc圈,有N头zsc,每天你最多可以杀一头zsc卖钱,获益就是zsc的体重.但是每过一天每头zsc的体重都会下降P[i](当然,如果zsc体重<=0了,自然获利就是0),问K天内你的最大获利. [输人文件] 第一行两个数N.K: 第二行N个

8月18日全球域名商(国际域名)解析新增保有量TOP20

IDC评述网(idcps.com)08月24日报道:根据DailyChanges公布的最新数据显示,在2015年8月18日,全球域名解析新增保有量二十强大战中,DOMAINCONTROL.COM蝉联冠军,新增保有量6,247个,相比上期有所缩小.另外,本期入围二十强的中国域名商增至4家,分别是中国万网.DNSPod.爱名网.易名中国.下面,请看IDC评述网对相关数据进行详细分析. (图1)全球域名解析商(国际域名)新增保有量TOP20分布图 根据图1,可知在8月18日全球域名解析市场上,DOMA

中国互联:TOP域名11月18日开售

互联网已经成为全球经济命脉 互联网发展30年中,全球人口数目从1985年的48亿增长至2014年71.3亿.据悉,2025年全球人口将突破80亿大关.人口的急速增长的同时将消费市场带向繁荣.在2014年达沃斯论坛中,中华人民共和国国家互联网信息办公室主任指出:"目前中国互联网网站近400万家.中国互联网经济增长速度有两位数,而且是以30%的速度递增." 域名是互联网的敲门砖 在域名发展的历史时间中,可以简单分成:规则--规则+资源两个时段."资源"之声一直是占据着主