Java集合框架之Map详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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("name1", "zhangsan");

map.put("name2", "lisi");

map.put("name3", "wangwu");

map.put("name1", "zhaoliu");

System.out.println(map);

System.out.println("--------------------");

String value1=(String) map.get("name2");

System.out.println(value1);

String value2=(String) map.get("name4");

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("a", "dog");

map.put("b", "pig");

map.put("c", "flog");

map.put("d", "cow");

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集合的两种取出(遍历)方式:

相关文档
最新文档