您的位置:首页 > 编程语言 > Java开发

Java笔记(二十三)……Map集合

2013-10-22 15:24 337 查看

Map接口

Map<K,V>

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

常用方法

添加

V

put(Kkey,Vvalue)


void

putAll(Map<?extendsK,?extendsV>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+")");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: