目录

Map特性

映射的三种视图的返回方式

遍历键值对集的方法:

Map编程思想

Map遍历方式

使用接口 SortedMap,k>

Class HashMap,v>

Class LinkedHashMap,v>

Class TreeMap,v>

例子:


Map特性

  1. Map也是集合的一种,由键和值组成——{键:值}。如果熟悉python的人可能就很熟悉了,这不就是python里面的字典吗?json也是这种结构。在Java中这种结构被称为Map映射。
  2. 在Map中一个键只能对应一个值,一个值却能对应多个键。即键是唯一的不能重复,但是值可以重复——C只能对应一个值3,但是值3能对应键C和键D。对同一个键调用两次put,后面的put会取代前面的值。
    • 集合框架不认为映射本身是一个集合,不过可以得到映射视图(view)——这是实现了Collection接口或某个子接口的对象。映射的三种视图:

      映射的三种视图的返回方式

      Set<K> keySet()

      键的集合 Collection<V> valus() 值的集合(不是一个集合) Set<Mep.entry<K,V>> entrySet() 键/集对的集合

      遍历键值对集的方法:

      for(Map.Entry<String,Employee> entry : staff.entrySet()) {

      ...

      }

      曾经最高效的方法

      consts.forEach((k,v) -> {

              ...

      })

      最高效得方法
      先Set<K> keySet() 取得键的集合,再通过键查找值maps.get(key) 最简单得方法

Map编程思想

  • 由Map的关联性可以得到,Map的键和值有着强关联性。所以我们在需要储存具有强关联性的两个值时就需要用到Map
  • 由于Map的键唯一性,我们就可以储存不可重复的值。例如一个员工对象,员工Id是唯一值,所以就可以通过员工Id对应员工对象建立Map映射{Id:employee};商品数量以及总价格{count:totalPrice}

Map遍历方式

如果我们要返回一个有序的Map集合我们应该如何去获取呢?

使用接口 SortedMap<V,K>

                                 方法                    作用
Comparator<? super K> comparator() 返回对键进行排序的比较器
K firstMap() 返回映射中最大值
K lastKet() 返回映射中最小值

另外还有一些其他的重要实现类:

常用Map

Class HashMap<K,V>

HashMap基于哈希表的实现的Map接口。特性:

无序,不重复,无索引。

Class LinkedHashMap<K,V>

HashMap基于哈希表的实现的Map接口。特性:

有序,不重复,无索引。

Class TreeMap<K,V>

TreeMap 基于红黑树实现的高效率Map接口。特性:

排序,不重复,无索引。

还有一些实现特殊需求的实现类:

AbstractMap , Attributes , AuthProvider , ConcurrentHashMap , ConcurrentSkipListMap , EnumMap  Hashtable , IdentityHashMap , LinkedHashMap , PrinterStateReasons , Properties , Provider , RenderingHints , SimpleBindings , TabularDataSupport , UIDefaults , WeakHashMap

例子:

public class MapTest {public static void main(String[] args) {Map<String, Integer> maps = new HashMap<>();maps.put("F",90);maps.put("R",90);maps.put("A",90);maps.put("H",90);maps.put("B",34);maps.put("C",3242);maps.put("D",34);maps.put("E",55);System.out.println(maps);//先遍历键,再根据键遍历值Set<String> keys = maps.keySet();for (String key : keys) {int value = maps.get(key);System.out.println(key+":"+value);}/** for(Map.Entry<String,Employee> entry : staff.entrySet()) {**      ...** }*/System.out.println("---------------------------------------");for (Map.Entry<String, Integer> stringIntegerEntry : maps.entrySet()) {System.out.println(stringIntegerEntry);}/*maps.forEach((k,v) -> {});*/System.out.println("---------------------------------------");maps.forEach((k,v) -> {System.out.println((k + ":" + v));});System.out.println("---------------------------------------");//转为有序SortedMap<String, Integer> sortedMap = new TreeMap();sortedMap.putAll(maps);System.out.println(sortedMap);}
}

运行结果:

{A=90, R=90, B=34, C=3242, D=34, E=55, F=90, H=90}
A:90
R:90
B:34
C:3242
D:34
E:55
F:90
H:90
---------------------------------------
A=90
R=90
B=34
C=3242
D=34
E=55
F=90
H=90
---------------------------------------
A:90
R:90
B:34
C:3242
D:34
E:55
F:90
H:90
---------------------------------------
{A=90, B=34, C=3242, D=34, E=55, F=90, H=90, R=90}

Process finished with exit code 0

Java的Map(映射)特性及编程思想相关推荐

  1. java map映射_【Java】Map 映射接口 概述

    Map 映射接口 概述 Map是一个双列数据,存储K-V类型的数据 JDK1.2 - HashMap 是目前Map的主要实现类 JDK1.2 线程不安全的,效率高,可存储null的key和value ...

  2. java基础—几种for循环编程思想

    几种for循环编程思想 public class TextDemos1 {public static void main(String[] args) {// TODO Auto-generated ...

  3. Java程序员的日常—— 《编程思想》关于类的使用常识

    Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题.世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的初始化与垃圾回收还是必不可少的知识. 关于 ...

  4. Java编程思想(第4版)(评注版)

    传世经典书丛  Java编程思想(第4版)(评注版)  (美)埃克尔(Eckel, B.)著 刘中兵评注 ISBN 978-7-121-13521-7 2011年6月出版 定    价:108.00元 ...

  5. Android知识架构 · Java的编程思想

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...

  6. 【java】《java编程思想》 读书笔记

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  7. Java编程思想日志

    Thinking In Java的作者是大牛!做事要站在巨人的肩膀上有助于提高效率和开阔眼界!建议学习java的小伙伴儿有时间可以抽空了解一下,以下内容为读书笔记,比较杂乱,仅供参考,推荐阅读原著: ...

  8. java编程思想--概述

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  9. Java编程思想第四版学习总结

    Java编程思想第四版学习总结 文章目录 Java编程思想第四版学习总结 第 1 章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重 ...

最新文章

  1. php solr 更新数据类型,Solr更新文档数据
  2. STM32的IIC应用详解1
  3. 实至名归!ACM宣布深度学习三巨头共同获得图灵奖
  4. cordova 发布 android release 签名打包
  5. 35岁前需要完成的事
  6. 技术对游戏公司来讲到底有多重要?
  7. 当你不能回答别人的提问时怎么办
  8. php多线程实现抓取,php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
  9. J1939协议之通俗易懂----概述
  10. Oracle数据库的数据类型
  11. C语言中除法怎么取得小数
  12. linux抓包UDP流量
  13. 发动机冒黑烟_发动机总冒黑烟 用这招解决最快!
  14. 用Java实现N*N的标准数独及对角线数独解题
  15. 知识图谱(Knowledge Graph)
  16. vivado ooc综合
  17. 30.7.1 通过mysqladmin修改用户密码
  18. 组合查询条件的合理应用
  19. mysql约束表达式大全_SQL常用约束语句
  20. 当贝投影K歌详细教程 只要三步就能打造专属练歌房

热门文章

  1. 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
  2. 摄像头8mm可以看多远_家用监控摄像头镜头焦距该如何选择_弱电工程
  3. C语言一些有趣的现象(例子) (译)
  4. 区块链技术研究热点有哪些
  5. markdown的搬砖汇总
  6. 事务机制:Redis能实现ACID属性吗?
  7. Vue.js学习笔记—调查问卷WebApp
  8. PHP 输出图像 imagegif 、imagejpeg 与 imagepng 函数(五)
  9. 联想—拯救者—R9000P触控板无反应
  10. Linux面试相关知识点看着一文就够了