黑马程序员---Map集合

------- android培训java培训、期待与您交流! ----------

Map集合:键值对形式

什么时候使用map集合呢?
 * 当数据之间存在映射关系时,就要先想map集合

常用方法演示


import java.util.*;

class MapDemo 
{
	public static void main(String[] args)
	{
		Map<String, String> map=new HashMap<String, String>();
		map.put("01", "yi");
		map.put("02", "er");
		map.put("03", "san");
		
		//添加元素出现相同的Key时,新添加的值会覆盖原有Key对应的值,原有值呗put方法返回。
		//System.out.println(map.put("01", "si"));返回V:yi
		
		//containsKey();
		System.out.println(map.containsKey("01"));
		//remove();
		System.out.println(map.remove("03"));//remove 方法将Key对应的V返回。
		//get();
		System.out.println(map.get("03"));//此方法也可以判断Key是否存在,不存在就返回null
		
		//获取map集合中的所有的V
		Collection<String> c=map.values();
		System.out.println(c);
		System.out.println(map);
		
	}
}


 

*Map集合的两种取出方式
 * 1,将map中所有的键存入set集合,set具备迭代器,所以可以用迭代方式取出所有键,再get方法获取值
 *   Map集合的取出原理就是将键转化成Set集合再通过Set的迭代器和Map的get方法来取出
 * 2,获取map集合中的映射关系。用entrySet()


import java.util.*;
import java.util.Map.Entry;

public class MapDemo2 
{
	public static void main(String[] args)
	{
		Map<String, String> m=new HashMap<String, String>();
		m.put("01", "yi");
		m.put("02", "er");
		m.put("03", "san");
		
		//第一种取出方式
		/*//1,获取map集合的所有Key,用keySet();
		Set<String> keySet=m.keySet();
		//2,用此Set集合,获取迭代器,取出Key以及用map集合的get方法获取值V
		Iterator<String> it=keySet.iterator();
		
		while(it.hasNext())
		{
			String key=it.next();
			
			String value=m.get(key);
			System.out.println(key+value);
		}*/
		
		//第二种取出方式
		//1,获取map集合中的映射关系。用entrySet();
		Set<Entry<String, String>> entrySet=m.entrySet();
		//2,用Set迭代器获取K,V
		Iterator<Entry<String, String>> it=entrySet.iterator();
		
		while(it.hasNext())
		{
			Entry<String,String> kv=it.next();
			String key=kv.getKey();
			String value=kv.getValue();
			System.out.println(key+value);
		}
		
	}
}


 

练习

/*
 * "sfjgeirgijkjalswofgjflg"获取该字符串中字母出现的次数
 * 希望的打印结果:a(1)c(4)...
 * 通过结果发现,每一个字母都有对应的次数,说明字母与次数之间有映射关系
 *
 * 什么时候使用map集合呢?
 * 当数据之间存在映射关系时,就要先想map集合*/

import java.util.*;
import java.util.Map.Entry;
public class MapTest3 
{
	public static void main(String[] args)
	{
		String s= charCount("iegkdvn-0e4lkdfjxcaw");
		System.out.println(s);
	}
	
	public static String charCount(String str)
	{
		char[] chs=str.toCharArray();//将字符串转换成字符数组
		
		TreeMap<Character,Integer> tm=new TreeMap<Character, Integer>();
		
		int count=0;
		for(int x=0;x<chs.length;x++)
		{
			//判断是否为字母
			if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'))
				continue;
			Integer value=tm.get(chs[x]);
			
			if(value!=null)
				count=value;
			count++;
			tm.put(chs[x], count);
			count=0;//一遍完成后清零
		}
		StringBuilder sb=new StringBuilder();
		
		Set<Entry<Character, Integer>> entrySet=tm.entrySet();
		Iterator<Entry<Character, Integer>> it=entrySet.iterator();
		
		while(it.hasNext())
		{
			Entry<Character,Integer>me=it.next();
			Character key=me.getKey();
			Integer value=me.getValue();
			sb.append(key+"("+value+")"+" ");
		}
		return sb.toString();
	}
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值