Java笔记(二十三)……Map集合
2013-10-22 15:24
337 查看
Map接口
Map<K,V>该集合存储的是键值对,成对往集合里存,而且要保证键的唯一性
常用方法
添加
V
put (Kkey, Vvalue)
void
putAll (Map<?extends K,?extends V>m)
删除
void
clear ()
V
remove (Objectkey)
判断
boolean
isEmpty ()
boolean
containsKey (Objectkey)
boolean
containsValue (Objectvalue)
获取
V
get (Objectkey)
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中的一个静态内部接口
[code]publicstaticvoidmain(String[]args)
{
//创建一个HashMap集合
Map<String,String>m=newHashMap<String,String>();
//存入一些键值对
m.put("1","A");
m.put("2","B");
m.put("3","C");
//获取存放键值对的Set集合
Set<Map.Entry<String,String>>se=m.entrySet();
//获取Set集合的迭代器
Iterator<Map.Entry<String,String>>ie=se.iterator();
//遍历读取集合中的键值对,并打印
while(ie.hasNext())
{
Map.Entry<String,String>me=ie.next();
System.out.println("num="+me.getKey()+";name="+me.getValue());
}
}
Map子类
HashTable
底层的数据结构是哈希表不可以存入null键null值,线程同步,效率低,后期被HashMap取代
HashMap
底层的数据结构是哈希表允许存入null键null值,线程不同步
TreeMap
底层的数据结构是二叉树线程不同步,可以用于给map集合中的键进行排序(通过比较器或者自然排序)
Set集合底层应用的就是TreeMap集合
Map扩展知识
Map集合都是被使用到映射关系上所以,存在一对多的映射关系,如下:
Map<String,Map<String,String>>
Map<String,List<Student>>
Map应用
字符串统计字数
[code]/*
"abcabcdea"
打印字母出现的次数
例子a(3)b(2)
*/
importjava.util.*;
classMapTest
{
publicstaticvoidmain(String[]args)
{
//测试字符串
Strings="abcabc123dea";
//创建Map对象存放对应字母
Map<Character,Integer>map=newTreeMap<Character,Integer>();
//循环遍历字符串
for(inti=0;i<s.length();i++)
{
//建立char的对象封装字母
Characterc=newCharacter(s.charAt(i));
//如果包含该字母,对应value+1,否则存入该新的键值对,value为1,代表次数为1
if(map.containsKey(c))
{
map.put(c,map.get(c)+1);
}
else
map.put(c,1);
}
//取出对应关系,并打印
Set<Map.Entry<Character,Integer>>entrySet=map.entrySet();
Iterator<Map.Entry<Character,Integer>>it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer>entry=it.next();
Characterc=entry.getKey();
Integeri=entry.getValue();
System.out.println(c+"("+i+")");
}
}
}
相关文章推荐
- Java笔记(二)……Hello world!
- Java笔记(十三)……面向对象III继承(inheritance)
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
- java笔记 Map集合
- Java笔记(十六)……内部类
- Java笔记(二十七)……IO流中 File文件对象与Properties类
- Java笔记(三)……基础语法
- Java笔记(六)……程序流程控制
- Java基础学习笔记二十三 Java核心语法之反射
- Java笔记(十二)……类中各部分加载顺序及存放位置问题
- 黑马程序员_毕向东_Java基础视频教程学习笔记(二十三)
- Java笔记(十八)……包
- Java笔记(十)……面向对象II封装(Encapsulation)
- Java笔记(十九)……多线程
- Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- Java笔记(二十)……线程间通信
- java 从零开始,学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- Java笔记(二十九)……网络编程
- Java笔记(三十)……正则表达式