Map接口

Map<K,V>

该集合存储的是键值对,成对往集合里存,而且要保证键的唯一性

常用方法

添加

V
put(K key, V value)

void
putAll(Map<? extends K,? extends V> m)

删除

void
clear()

V
remove(Object key)

判断

boolean
isEmpty()

boolean
containsKey(Object key)

boolean
containsValue(Object value)

获取

V
get(Object key)

int
size()

Set<Map.Entry<K,V>>
entrySet()

Set<K>
keySet()

Map集合的两种取出方式

第一种:Set<K> keySet

将Map中的所有键存入到Set集合中。

因为Set具备迭代器,可以迭代方式遍历所有的键

再通过Map的get方法获取对应的value

第二种:Set<Map.Entry<K,V>> entrySet()

将Map集合中的映射关系存放到Set集合中

而这个映射关系我们称之为Map.Entry

Entry其实就是Map中的一个静态内部接口

   1: public static void main(String[] args) 

   2: {

   3:     //创建一个HashMap集合

   4:     Map<String,String> m = new HashMap<String,String>();

   5:     

   6:     //存入一些键值对

   7:     m.put("1","A");

   8:     m.put("2","B");

   9:     m.put("3","C");

  10:  

  11:     //获取存放键值对的Set集合

  12:     Set<Map.Entry<String,String>> se = m.entrySet();

  13:     

  14:     //获取Set集合的迭代器

  15:     Iterator<Map.Entry<String,String>> ie = se.iterator();

  16:     

  17:     //遍历读取集合中的键值对,并打印

  18:     while(ie.hasNext())

  19:     {

  20:         Map.Entry<String,String> me = ie.next();

  21:         System.out.println("num = "+me.getKey()+"; name = "+me.getValue());

  22:     }

  23: }

Map子类

HashTable

底层的数据结构是哈希表

不可以存入null键null值,线程同步,效率低,后期被HashMap取代

HashMap

底层的数据结构是哈希表

允许存入null键null值,线程不同步

TreeMap

底层的数据结构是二叉树

线程不同步,可以用于给map集合中的键进行排序(通过比较器或者自然排序)

Set集合底层应用的就是TreeMap集合

Map扩展知识

Map集合都是被使用到映射关系上

所以,存在一对多的映射关系,如下:

Map<String,Map<String,String>>

Map<String,List<Student>>

Map应用

字符串统计字数

   1: /*

   2: 

   3: "abcabcdea"

   4: 打印字母出现的次数

   5: 例子 a(3) b(2)

   6: */

   7: import java.util.*;

   8: class MapTest 

   9: {

  10:     public static void main(String[] args) 

  11:     {

  12:         //测试字符串

  13:         String s = "abcabc123dea";

  14:         

  15:         //创建Map对象存放对应字母

  16:         Map<Character,Integer> map = new TreeMap<Character,Integer>();

  17:         

  18:         //循环遍历字符串

  19:         for(int i = 0 ; i < s.length() ; i ++)

  20:         {

  21:             //建立char的对象封装字母

  22:             Character c = new Character(s.charAt(i));

  23:                 

  24:             //如果包含该字母,对应value+1,否则存入该新的键值对,value为1,代表次数为1

  25:             if(map.containsKey(c))

  26:             {

  27:                 map.put(c,map.get(c)+1);

  28:             }

  29:             else

  30:                 map.put(c,1);

  31:         }

  32:  

  33:         //取出对应关系,并打印

  34:         Set<Map.Entry<Character,Integer>> entrySet = map.entrySet();

  35:  

  36:         Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();

  37:  

  38:         while(it.hasNext())

  39:         {

  40:             Map.Entry<Character,Integer> entry = it.next();

  41:             Character c = entry.getKey();

  42:             Integer i = entry.getValue();

  43:             System.out.println(c+"("+i+")");

  44:         }    

  45:     }

  46: }

Java笔记(二十三)……Map集合的更多相关文章

  1. Java笔记(二十四)……集合工具类Collections&Arrays

    Collections 集合框架的工具类,方法全部为静态 Collections与Collection的区别 Collection是集合框架的一个顶层接口,里面定义了单列集合的共性方法 Collect ...

  2. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  3. Java基础(二十三)集合(6)Map集合

    Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...

  4. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  5. Android(java)学习笔记104:Map集合的遍历之键找值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  6. Android(java)学习笔记103:Map集合的获取功能

    package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; i ...

  7. Android(java)学习笔记102:Map集合功能概述

    下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...

  8. Java基础知识强化之集合框架笔记57:Map集合之HashMap集合(HashMap<Student,String>)的案例

    1. HashMap集合(HashMap<Student,String>)的案例 HashMap<Student,String>键:Student      要求:如果两个对象 ...

  9. Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMap<String,Student>)的案例

    1. HashMap集合(HashMap<String,Student>)的案例 HashMap是最常用的Map集合,它的键值对在存储时要根据键的哈希码来确定值放在哪里. HashMap的 ...

随机推荐

  1. cgi创建web应用(一)之传递表单数据与返回html

    主旨: 0.环境说明 1.创建一个cgi本地服务 2.创建一个html表单页 3.创建一个对应的cgi 脚本文件 4.运行调试 0.环境说明: 系统:win7 32位家庭版 python:2.7 代码 ...

  2. nginx 常用的 URL 重写方法

    转自:http://www.jbxue.com/article/4727.html Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下.url重写应该不陌生,不管是SEO URL 伪静 ...

  3. 将TIBCO Host 实例注册为Windows服务

    安装了TIBCO ActiveMatrix BPM及成功创建了ActiveMatrix Administrator 和 BPM Server后,每次都要手动启动tibcohost,比较麻烦,实际上TI ...

  4. hdu 1568 Fibonacci 数学公式

    Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到的Fibonacci数列(f[0]=0,f[1]=1;f[i] = ...

  5. 【Scala 】Akka库

    简介编辑 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用.它已经成功运用在电信行业.系统几乎不会宕机(高可用性 99.9 ...

  6. homework-Agile Software Development

    对敏捷开发的一些思考 这周的作业是对敏捷开发的相关阅读和思考. 在阅读的过程中,可以看到作者是一位具有丰富编程经验的大师.在开发的经历中,作者经历了极限编程等开发过程,但是在作者的多年经验中,作者还是 ...

  7. 【转载】Java 升级到jdk7后DbVisualizer 6 启动空指针的处理方案

    将JDK从6升级到了7(或从其他电脑移植DBV文件夹后),每当启动DbVisualizer 6的时候都会报空指针异常 在官网上找到了相关的方案,如下: In the DbVisualizer inst ...

  8. 'InitializeCulture' is not a member of 'XXXX'

    今天在部署ASP.NET网页时出现一个奇怪的问题.在开发,调试时访问网页一切正常.但一部署到IIS中时就会出现以下的错误信息:'InitializeCulture' is not a member o ...

  9. 自适应单本小说网站源码,基于bootstrap+dedecms。

    具体效果:http://www.ishengxu.cc/ 基于bootstrap+dedecms,PC端与手机端自适应,广告位也都设计好了,很简单.

  10. PieTTY

    PieTTY 用 pietty 連上主機時 鍵盤右方數字鍵 (keypad) 失效的問題 用 pietty 連上主機時 鍵盤右方數字鍵 (keypad) 失效的問題 應該滿多人用 pietty 連上程 ...