黑马程序员映射

JavaEE企业级应用开发教程——第四章 MyBatis的关联映射和缓存机制(黑马程序员第二版)(SSM) 阅读详情

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

黑马程序员映射

映射是一个存储关键字和值的关联或者说是关键字/值对的对象。给定一个关键字,可以得到它的值。关键字和值都是对象。关键字必须是唯一的。但值可以是重复的。

1.       Map接口映射唯一关键字到值。关键字是以后用于检索值的对象。给定一个关键字和一个值,可以存储这个值到一个Map对象中。当这个值被存储以后,就可以使用它的关键字来检索它。映射循环使用两个基本操作:get()和put()。使用put()方法可以将一个指定了关键字和值的值加入映射。为了得到值,可以通过将关键字作为参数来调用get()方法。映射不是类集,但可以获得映射的类集“视图”。为了实现这种功能,可以使用entrySet()方法,它返回了一个包含了映射中元素的集合(Set)。为了得到关键字的类集“视图”,可以使用keySet()方法,因为Map的键是不能重复的,该方法返回的类型是Set。为了得到值的类集“视图”,可以使用values()方法,因为Map的值可以重复,该方法返回的类型是Collection。类集“视图”是将映射集成到类集框架内的手段。

2.       SortedMap接口继承Map,它确保了各项按关键字升序排序。排序映射允许对子映射进行高效的处理。使用headMap(),tailMap()或subMap()方法可以获得子映射。调用firstKey()方法可以获得集合的第一个关键字。而调用lastKey()方法可以获得集合的最后一个关键字。

3.       HashMap类使用散列表实现Map接口,本身并没有增加任何新的方法。它允许一些基本操作如get()和put()的运行时间保持恒定,即使对大型集合,也是这样。HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储到该数组当中。当向HashMap中put一对键值时,它会根据Key的hahsCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。如果该位置没有对象存在,就将此对象直接放进数组当中;如果该位置已经有对象存在了,则顺着此存在的对象的链开始寻找,如果此链上有对象的话,再去使用equals()方法进行比较,如果对此链上的某个对象的equals方法比较为false,则将该对象放到数组当中,然后将数组中该位置以前存在的那个对象链接到此对象的后面。

4.       TreeMap类通过使用树实现Map接口。TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索。应该注意的是,不像散列映射,树映射保证它的元素按照关键字升序排序。TreeMap实现SortedMap。而它本身并没有另外定义其他方法。

5.       迭代函数。通常希望循环访问类集中的元素。例如,可能会希望显示每一个元素。处理这个问题最简单的方法是使用iterator。它是一个实现Iterator或者ListIterator接口的对象。Iterator可以完成循环通过类集,从而获得或删除元素。ListIterator继承Iterator,允许双向遍历列表,并可以修改元素。在通过迭代函数访问类集之前,必须得到一个迭代函数。每一个Collection类都提供一个iterator()函数,该函数返回一个对类集头的迭代函数。通过使用这个迭代函数对象,可以访问类集中的每一个元素,一次一个元素。使用迭代函数循环通过类集的内容,步骤如下:

(1)       通过调用类集的iterator()方法获得对类集头的迭代函数。

(2)       建立一个调用hasNext()方法的循环,只要hasNext()返回true,就进行循环迭代。

(3)       在循环内部,通过调用next()方法来得到每一个元素。

6.       比较函数。TreeSet和TreeMap都按排序顺序存储元素。然而,精确定义采用何种“排序顺序”的是比较函数。通常在默认情况下,这些类通过使用被Java称之为“自然顺序”的顺序存储他们的元素,而这种顺序通常也是我们所需要的。如果需要不同的方法对元素进行排序,可以在构造集合或映射时,指定一个Comparator对象。这样做为我们提供了一种精确控制如何将元素存储到排序类集和映射中的能力。Comparator接口定义了两个方法:compare()和equals()。这里给出的compare()方法按顺序比较了两个元素:int  compare(Object obj1,Object obj2)obj1与obj2是被比较的两个对象。当两个对象相等时,该方法返回0;当obj1大于obj2时,返回一个正值;否则,返回一个负值。boolean equals(Object obj)这个方法中,obj是被用来进行相等测试的对象。如果obj和调用对象都是Comparator的对象并且使用相同的排序。该方法返回true。否则返回false。还有一种方式也能自定义比较方法:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。当两种排序都存在时,以比较器为主。

package com.heima.exam;

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Set;

 

publicclass MapTest1

{

    publicstaticvoid main(String[] args)

    {

       HashMap<String,String> map = new HashMap<String,String>();

      

       map.put("a", "aa");

       map.put("b", "bb");

       map.put("c", "cc");

       map.put("d", "dd");

       map.put("e", "ee");

      

       Set<String> set = map.keySet();

      

       for(Iterator<String> iter = set.iterator(); iter.hasNext();)

       {

           String key = (String)iter.next();

           String value = (String)map.get(key);

          

           System.out.println(key + "=" + value);

       }

    }

}

 

 

 

package com.heima.exam;

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.Map.Entry;

 

publicclass MapTest2

{

    publicstaticvoid main(String[] args)

    {

       HashMap<String,String> map = new HashMap<String,String>();

      

       map.put("a", "aa");

       map.put("b", "bb");

       map.put("c", "cc");

       map.put("d", "dd");

      

       Set<Entry<String, String>> set = map.entrySet();

      

       for(Iterator<Entry<String, String>> iter = set.iterator(); iter.hasNext();)

       {

           Map.Entry<String, String> entry = (Map.Entry<String,String>)iter.next();

          

           String key = (String)entry.getKey();

           String value = (String)entry.getValue();

          

           System.out.println(key + " : " + value);

       }

    }

}

 

 

 

package com.heima.exam;

 

import java.util.Comparator;

import java.util.Iterator;

import java.util.Set;

import java.util.TreeMap;

 

publicclass TreeMapTest {

    publicstaticvoid main(String[] args)

    {

       TreeMap<String,String> map = new TreeMap<String,String>(new MyComparator());

      

       map.put("C","cc");

       map.put("A","aa");

       map.put("B","bb");

       map.put("E","ee");

       map.put("a","aa");

       map.put("F","ff");

       map.put("D","dd");

      

       Set<String> set = map.keySet();

       for(Iterator<String> iter = set.iterator(); iter.hasNext();)

       {

           String value = (String)iter.next();

          

           System.out.println(value);

                 

       }

      

    }

}

 

class MyComparator implements Comparator

{

    publicint compare(Object arg0, Object arg1)

    {

       String s1 = (String)arg0;

       String s2 = (String)arg1;

      

       return s2.compareTo(s1);

    }

}

 

别再为数据发愁:5分钟理解事件相机原理,并自己动手生成事件图像 本文深入浅出地解析了事件相机的工作原理,并提供了从静态图像生成事件数据的实用方法。通过Python代码示例,读者可以快速掌握如何模拟事件相机的输出,应用于机器人导航、自动驾驶等领域,解决数据获取难题。 阅读详情

相关推荐

基于Python批量获取过去某地某时的天气数据

此段代码为经Visual Weather API官网样例后修改。原代码返回数据格式为json,经测试json风速字段不可用,后改为返回数据格式为csv。若修改weather_api_endpoint,还可获取该地点的预测数据,但返回数据字段可能发生变化,请以官网文档为准。获取到的字段包括:平均温度、露点、湿度、风速、降雨量、能见度、云量、天气类型等。目的:已知某一地址,获取过去某一时间该地的天气数据,并能够批量运行。这一步也会有获取不到的时间和地点,因此为空白。此段代码为经百度地图api官网样例后修改。

wiseman1233的博客 905

一份Excel映射出一名普通程序员的成长之路

&#13; &#13; &#13; &#13; &#13; &#13; &#13; 点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事作者玄冰如需转载,请联系原...

程序人生的博客 2579

游戏开发实战:5种AOI算法对比(九宫格 vs 灯塔 vs 十字链表)

本文深入对比了游戏开发中五种主流AOI算法(九宫格、灯塔、十字链表等)的性能与适用场景,帮助开发者根据项目规模选择最优解决方案。通过详细的技术分析和实战数据,揭示不同算法在万人同屏等极端场景下的表现差异,为MMORPG等大型多人在线游戏提供关键性能优化指南。

weixin_29268385的博客 475

一个程序员应该知道的名词

dns   (域名系统)   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 DNS功能

赵群先生 6224

IC设计新手必看:如何正确使用去耦电容(decap)避免电源噪声?

本文深入探讨了IC设计中去耦电容(decap)的应用技巧,从核心原理到布局实现,帮助新手工程师有效抑制电源噪声。文章详细解析了MIM、MOM等电容类型的特性与选择策略,并提供了先进的布局技巧和验证方法,特别适用于28nm以下先进工艺的电路设计挑战。

weixin_30555125的博客 114

AD9253 LVDS 高速ADC驱动开发

对应:data clock时钟为500M DDR mode。具体内容:下文的参考博客写的很清楚,我就不详细写了。参考博客clock align模块不完整,本文新增这个模块。3、该款ADC工作在125Msps下,14bit - 2Lane - 1frame 模式。2、查阅Xilinx xapp524手册。1、查阅AD9253器件手册。

CAOXUN_FPGA的博客 2109

Java程序员从笨鸟到菜鸟之(五十八)细谈Hibernate(九)hibernate一对一关系映射...

一对一关系映射即为关系双方都含有对方一个引用,其实在生活中一对一关系也很常见,比如人和身份证,学生和学号等,都是一对一的关系映射,一对一映射分为单向的和双向的,没种关系映射又可以分为主键关联映射,唯一外键关联映射。 一:主键关联映射 一般一对一主键关联映射通过foreign主键生成器使用另外一个相关联的对象的标识符。通常和&lt;one-to-one&gt;联合起来使用。一对一主键关...

105

属性基加密(Attribute-based Encryption, ABE)

KP-ABE中,用户的密钥定义了访问策略,密文的属性与策略进行匹配。CP-ABE中,密文定义了访问策略,用户的属性与策略进行匹配。

2201_75392924的博客 1831

程序里的映射是什么意思?

映射就是给一个对象(可以是变量、物体、等等)起一个唯一的别名。 例如java中的Map就是一个表达映射的类。 Map names = new HashMap(); names.put("编号9527", "唐伯虎"); 这个例子就是把编号9527映射到唐伯虎上,只需要告诉程序你要找编号9527,程序就能找到唐伯虎。这就是映射

濯君 2万+

Cadence SKILL 语言实战指南:从函数列表到高效自动化脚本

本文是Cadence SKILL语言实战指南,旨在帮助芯片设计工程师从掌握核心函数列表出发,高效构建自动化脚本。文章详细解析了数据处理、数据库访问、流程控制及错误处理四类关键函数,并通过版图层批量修改与参数化单元生成两大实战场景,演示如何将函数组合成解决实际问题的自动化方案,从而显著提升Virtuoso环境下的工作效率。

beta5的博客 706

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2471

黑马程序员——Map集合(映射)

------- android培训、java培训、期待与您交流! ---------- 学习总结 Map集合(映射) 该集合存储键值对,一对对存,也称为双列集合。map集合中必须保证键的唯一性。 常用方法: 1、添加 value put(key,value):返回前一个和key关联的值,如果没有返回null。 2、删除 void clear():清空map集合。 valu

dynasty110的博客 646

Allegro 中复制一部分PCB到另一个PCB中去

引言:自从学了allegro后,我每天快乐地再拉线,一开心肯定出事情。不料今天一高兴,把本来在5层的铜皮直接在4层画起来了。不过,幸好我知道换层,才省了又要画铜皮的时间。好了,开干,如果要将其他层的铜皮换到想要换到的层上,就需要这个命令。

tianpu2320959696的博客 970

黑马程序员+Java一对一映射问题的探索

------- android培训、java培训、期待与您交流! ---------- 在做黑马基础测试时,我遇到一道一对一映射问题,当时我只能想到用Map集合,但做完后我发现这样做很麻烦。因此这几天我一直在思考有没有更简单的方法解决此类问题,今天我找到了一个更好的方法查表法,以下是对此类问题的总结,由于能力有限,有错误或不完善的地方或更好的方法,还请不吝赐教,谢谢! 一问题描述: 从键

zwp2011204608的博客 445

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

黑马程序员---Java中的映射Map

关于Java中的映射Map(三)                  --------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 1. Map 集合       Map派系的顶层接口。Map K表示键的泛型,V表示值的泛型     Map集合自身特点   A. Map集合存储的键值对   B. Map集合

a15868717540的专栏 1760

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员——mysql——day07——MyBatis配置文件和映射文件

什么是框架框架解决了哪些问题分层开发下常见的框架程序开发中的框架往往是对常见功能的封装,通常与具体业务无关,也可以认为是软件的半成品。程序框架理解为基础或者机械标准件(例如螺丝螺母标准的机械部件)。假如你要造一辆马车,在没有框架的情况下,你需要自己去伐木,去把木头做成木板,木棍,然后组成轮子,门,等部件,然后组装起来。但如果你用了框架,就相当于你有现成的轮子,门等部件,你只需要组装一下就可以了。一个框架是一组可复用的设计构件。

qq_56444564的博客 1121

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

黑马程序员TypeScript学习笔记—索引签名、映射类型等

这篇文章摘要总结了TypeScript中的关键类型系统特性,包括索引签名、映射类型、泛型工具类型Partial的实现分析,以及索引查询类型的使用方法。同时介绍了TS的类型声明文件(.d.ts),说明了其只包含类型声明而不含可执行代码的特性。文章还讲解了如何利用内置和第三方类型声明文件,并通过package.json加载声明文件的方法。最后,提供了创建自定义类型声明文件的指导,包括项目内共享类型和为已有JS文件添加类型声明的基本概念。这些内容涵盖了TypeScript类型系统的核心功能和声明文件的应用场景。

JLY19970726的博客 213

MyBatisPlus开发中映射匹配兼容性的问题

字段映射与表明映射问题与解决(截图来自黑马程序员,此文章仅用于笔记学习)

weixin_52060913的博客 147

黑马程序员---hibrtnate学习笔记之又好又快的关系映射技巧

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 又好又快的关系映射技巧 第一步:在需要映射关系的属性中按以下方式将关系进行描述出来 ------------关系属性描述-------------- xx属性,表示与类与xx的?对?关系 第二步:根据关系描述将以下模板套到相应的属性映射处

ajin2015的博客 547

黑马程序员_Map<K,V> 映射关系 Map.Entry

本文转自:http://rose20072011.blog.163.com/blog/static/1123361002013514111537286/ /*Map集合:存储键值对。要保证键的唯一性。 添加 put(K key,V value) putAll(Map<? extends K,? extends V> m) 删除 clear() remove(Object ...

weixin_30561425的博客 208

黑马程序员——反射:把java类中的各种成分映射为相应的java类

------- android培训代码shixi

a1106900429的专栏 530

黑马程序员_O‘Reilly java nio学习笔记之通道_内存映射文件&&Channel-to-Channel 传输

---------------------- android培训、java培训、期待与您交流! ---------------------- 4.内存映射文件     新的FileChannel类提供了一个名为map( )的方法,该方法可以在一个打开的文件和一个特殊 类型的 ByteBuffer之间建立一个虚拟内存映射。在FileChannel上调用map()方法会创建一个由

liuxu93466的专栏 7441

学习JavaWebDAY5-参考黑马程序员

数据库:DataBase,存储和管理数据的仓库数据库管理系统DBMS DataBase Management System,操纵和管理数据库的大型软件SQL,操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。

qq_42847733的博客 1737

黑马程序员瑞吉外卖分类管理500异常

解决方法:根据上图可知is_deleted是未知的标注,找到Category这个类,找到isDeleted将其注释掉,重新运行即可解决问题。系统接口报500异常。

2501_91803079的博客 281

黑马程序员苍穹外卖学习指南(本文解决我跟视频做这个项目时遇到的问题和解决方法)

检查两处,因为我们当时做的时候,是直接复制粘贴之前的admin的配置,很有可能是相应的user我们没有改成admin导致的,也可能是我们更改了老师之前带着我们做的内容导致他可以但我们不行。将其改为就可以了,这段是我自己写的,写完以后没有对答案,跟网课里的不一样,所有大家自己写完以后一定要跟官方代码对一下,不然就有可能会出问题。找到对应文件,在pages下的index.js的第226行,将上面的框里面的注释掉,下面的取消注释。在上面的部分选择yapi,再选择对应的文件夹,进行导入就可以了。

m0_63695860的博客 2337

mybatis相关注解总结

mybatis用到的一些注解的总结,备忘

溯源的专栏 201
上一篇: 黑马程序员类集框架中的接口和实现
下一篇: 黑马程序员反射和代理模式
lamstudyingnet
博客等级 码龄15年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值