第一范文网 - 专业文章范例文档资料分享平台

Java集合框架之Map详解

来源:用户分享 时间:2025/6/18 6:41:17 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Java集合框架之Map详解

Map(映射)是一个接口,是一个键值对来进行存储的。一对一对往里内存,而且要保证键的唯一性。 Map

|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0效率低 |--HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。 jdk1.2效率高 |--TreeMap:底层是而查实数据结构。线程不同步。可以用于给Map集合中的键进行排序,和Set很像,其实,Set底层就是使用了Map集合。

Map

HashMap是最常用的一个类,那么HashMap的最常用的方法有哪些呢? a) 放置:public V put(K key, V value):在此映射中关联指定值与指定键

b)获取:public V get(Object key):返回指定键所映射的值

键的集合:public Set keySet():Map的keySet()方法会返回key的集合,因为Map的键是不能重复的,因此ksySet()方法的返回类型是set。

c) 值的集合:public Collection values():Map的值是可以重复的。因此value()方法的

返回类型是Collection,可以容纳重复的元素.

我们来看看以下,这些常用方法的使用:

import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Set;

public class HashMapTest {

public static void main(String[] args) { HashMap map=new HashMap(); map.put(\, \); map.put(\, \); map.put(\, \); map.put(\, \); System.out.println(map);

System.out.println(\); String value1=(String) map.get(\); System.out.println(value1);

String value2=(String) map.get(\); System.out.println(value2);//打印一个空

Set set=map.keySet(); for(Iterator it=set.iterator();it.hasNext();){ //遍历Map中key的值

Object key=it.next(); System.out.println(key); }

Collection c=map.values(); System.out.println(c); } }

总结:keySet()方法和values()方法,经常用来遍历map中的key和value值

小练习:我们在命令行输入几个字符,有重复的,请使用map来记录字符出现的次数。

import java.util.HashMap; import java.util.Iterator; import java.util.Set;

public class MapTest {

public static void main(String[] args) { HashMap map = new HashMap(); for (int i = 0; i < args.length; i++) { if (map.get(args[i]) == null) { //如果map中key没有值,则直接放进去

map.put(args[i], 1); }else{

Integer in=(Integer) map.get(args[i]); //现将map中的值取出来

in++; //再自增1 map.put(args[i], in); } }

Set set=map.keySet(); //使用keySet将key放到Set集合里 for(Iterator it=set.iterator();it.hasNext();){ String key=(String) it.next();

Integer value=(Integer) map.get(key); System.out.println(key+\+value); } }

}

两种遍历Map

现在我们来看看如何遍历HashMap,遍历HashMap总共有两种方法: 第一种:使用keySet()方法和values()方法,前面一代码已演示过了

第二种,我们就要涉及到Map接口中的内部接口Map.Entry,我们要使用以下三种方法

a) Map映射视图:Set> entrySet():返回此映射中包含的映射关系

的 Set 视图

b) 获取key的集合:K getKey():返回与此项对应的键。来自于Map.Entry接口的

方法

c) 获取value的集合:V getValue():返回与此项对应的值,来自于Map.Entry接口

的方法

现在我们来看看第二种遍历是如何实现的呢?

import java.util.HashMap; import java.util.Iterator; import java.util.Map;

import java.util.Map.Entry; import java.util.Set;

public class MapEntryTest {

public static void main(String[] args) { HashMap map=new HashMap(); map.put(\, \); map.put(\, \); map.put(\, \); map.put(\, \);

Set set=map.entrySet(); for(Iterator it=set.iterator();it.hasNext();){ //遍历Map视图

Map.Entry entry=(Entry) it.next(); //返回给Map.Entry String key=(String) entry.getKey();

String value=(String) entry.getValue(); System.out.println(key+\+value); } } }

总结:map集合的取出原理:将map集合转成set集合,再通过迭代器取出。 map集合的两种取出(遍历)方式:

1. Set keySet:将Map中所有的键存入到Set集合。因为set具备迭代器。所有可以迭

代方式取出所有的键,再根据get方法,获取每一个键对应的值.

2. Set> entrySet:将集合中的映射关系存入到了set集合中,而这个关系的

数据类型就是:Map.Entry

Map扩展

我们什么时候使用集合呢?当数据之间存在着映射关系时,就要现象map集合。 练习:获取一段字符串中的字母出现的次数。 import java.util.*;

class Test1 { public static void main(String[] args) { String str=setValueCount(\ sop(str); } public static String setValueCount(String str){ char[] c=str.toCharArray(); TreeMap map=new TreeMap(); int count=0; for(int i=0;i='a'&&c[i]<='z'||c[i]>='A'&&c[i]<='Z'))//判断是否在a-z或者A-Z之间。 continue; /*第一种*/ Integer num=map.get(c[i]); if(num!=null){ count=num; } count++; map.put(c[i],count); count=0; /* 第二种 if(num==null){ map.put(c[i],1);

}

}else { num=num+1; map.put(c[i],num); } */ } StringBuilder sb=new StringBuilder(); Set> entry=map.entrySet(); for(Iterator> it=entry.iterator();it.hasNext();){ Map.Entry me=it.next(); sb.append(me.getKey()+\ } return sb.toString(); }

public static void sop(Object obj){ System.out.println(obj); }

搜索更多关于: Java集合框架之Map详解 的文档
Java集合框架之Map详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c39jy90ih1v1emx02sb8q8qp2012ift011fj_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top