Java笔记(二十三)……Map集合
Map接口
Map<K,V>
该集合存储的是键值对,成对往集合里存,而且要保证键的唯一性
常用方法
添加
voidputAll(Map<? extends K,? extends V> m)
删除
voidclear()
判断
booleanisEmpty()
booleancontainsKey(Object key)
booleancontainsValue(Object value)
获取
intsize()
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集合的更多相关文章
- Java笔记(二十四)……集合工具类Collections&Arrays
Collections 集合框架的工具类,方法全部为静态 Collections与Collection的区别 Collection是集合框架的一个顶层接口,里面定义了单列集合的共性方法 Collect ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- Java基础(二十三)集合(6)Map集合
Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Android(java)学习笔记104:Map集合的遍历之键找值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Android(java)学习笔记103:Map集合的获取功能
package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; i ...
- Android(java)学习笔记102:Map集合功能概述
下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...
- Java基础知识强化之集合框架笔记57:Map集合之HashMap集合(HashMap<Student,String>)的案例
1. HashMap集合(HashMap<Student,String>)的案例 HashMap<Student,String>键:Student 要求:如果两个对象 ...
- Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMap<String,Student>)的案例
1. HashMap集合(HashMap<String,Student>)的案例 HashMap是最常用的Map集合,它的键值对在存储时要根据键的哈希码来确定值放在哪里. HashMap的 ...
随机推荐
- rhel_6.x 安装mysql
不知为何mysql的官网很难下载,本人网上找了好久,终于找到了个镜像: 特别感谢http://mirrors.sohu.com/mysql/MySQL-5.6/ ^_^ 首先下载mysql的下面 ...
- PHP学习笔记(1) - 开发环境搭建
运行环境:phpstudy 它基本包括运行php应用需要的一切,php. apache.mysql,一键傻瓜安装 装好之后只需要配置虚拟主机和修改host文件就可以支持多站点 下载: http://w ...
- live 写博
1 2 3 4 5 1 2 3 4 5 ...
- 关于vs2013 mysql Ef框架中提示版本不兼容问题的解决办法
<runtime> <assemblyBinding> <dependentAssembly> <assemblyIden ...
- SqlBulkCoy和普通数据库操作执行速度对比
SQLBulkCopy,用于数据库之间大批量的数据传递.通常用于新,旧数据库之间数据的更新.即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来. 1.初始化SqlBulkCopy对象, ...
- 【BZOJ】1016: [JSOI2008]最小生成树计数 深搜+并查集
最小生成树计数 Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小 ...
- 创建第一个UI
创建一个2D UI 制作UI时,首先要创建UI的"根".在Unity顶部NGUI菜单中选择Create,然后选择2D UI. 创建完成后,在Scene窗口中,NGUI自动生成了一个 ...
- 关于tabBar的图片不能正常显示问题
可以先把图片的源文件的名称后面加上@2x 这种图片显示不正常问题原因可能是没有二倍图造成的!!
- ping(1)
/* ping program for learning IP protocol author: jeff date: 2014/10/25 */ #include <stdio.h> # ...
- 为你下一个项目准备的 50 个 Bootstrap 插件
Bootstrap是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等. 本文向你 ...