黑马程序员技术交流社区

标题: Map集合的应用扩展 [打印本页]

作者: Dana-乌拉拉    时间: 2014-11-24 18:28
标题: Map集合的应用扩展
五、Map集合的应用及扩展
1、何时使用Map集合:当量数据之间存在着映射关系的时候,就应该想到使用Map集合。
2、示例:
        获取该字符串中的字母出现的次数,如:"sjokafjoilnvoaxllvkasjdfns";希望打印的结果是:a(3)c(0).....
        通过结果发现,每个字母都有对应的次数,说明字母和次数之间有映射关系。代码如下:
[java] view plaincopy
/*
思路:1、将字符串转换为字符数组
      2、定义一个TreeMap集合,用于存储字母和字母出现的次数
      3、用数组去遍历集合,如果集合中有该字母则次数加1,如果集合中没有则存入
      4、将TreeMap集合中的元素转换为字符串
*/  
package TreeMapTest;  
import java.util.*;  
  
class CharCount  
{  
    public static void main(String[] args)   
    {  
        String s="sdfgzxcvasdfxcvdf";  
        System.out.println("s中各字母出现的次数:"+charCount(s));  
    }  
  
    //定义一个方法获取字符串中字母出现的次数  
    public static String charCount(String str)  
    {  
        char[] cha=str.toCharArray();//转换为字符数组  
  
        //定义一个TreeMap集合,因为TreeMap集合会给键自动排序  
        TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();  
  
        int count=0;//定义计数变量  
        for (int x=0;x<cha.length ;x++ )  
        {  
            if(!(cha[x]>='a'&&cha[x]<='z'||cha[x]>='A'&&cha[x]<='Z'))  
                continue;//如果字符串中非字母,则不计数  
            Integer value=tm.get(cha[x]);//获取集合中的值  
            if(value!=null)//如果集合中没有该字母,则存入  
                count=value;  
            count++;  
            tm.put(cha[x],count);//存入键值对  
            count=0;//复位计数变量  
        }  
           
         StringBuilder sb=new StringBuilder();//定义一个容器  
  
        //遍历集合,取出并以题目格式存入容器中  
        for(Iterator<Character> it=tm.keySet().iterator();it.hasNext();)  
        {  
            Character ch=it.next();  
            Integer value=tm.get(ch);  
            sb.append(ch+"("+value+")");  
        }  
        return sb.toString();//返回字符串      
    }  
}  





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2