- package com.itheima;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
- import java.util.TreeMap;
- public class Test4 {
- public static void main(String[] args) {
- //定义字符串并初始化
- String s = new String("abcdekka27qoq");
-
- //定义Map集合,我们用key存放元素,用value存放元素出现的次数,运用泛型限制添加元素的类型
- Map<Character,Integer> map = new TreeMap<Character,Integer>();
-
- char[] ch = s.toCharArray();//将字符串转换为数组!
- System.out.println(ch);//打印出作为参照
-
- //利用java5新特性增强型for循环,对这个数组进行迭代!
- for (char c : ch) {
- //取出数组中的元素后进行判断map集合中是否存在此元素,也就是说是否是第一次出现
- if(!map.containsKey(c)){
- map.put(c, 1);//是第一次出现的话就把这个元素添加进来,并把value的值赋为1
- }else{//集合中存在,就是说不是第一次出现的话就把它的次数增加1。
- Integer val = map.get(c);//取得它出现的次数。
- val+=1;//将次数增加1
- map.put(c, val);
- }
- }
-
- //利用entrySet()方法将map集合转化为set集合,这样的话就可以使用Iterator接口进行迭代!
- Set<Entry<Character, Integer>> set = map.entrySet();
-
- Iterator<Entry<Character, Integer>> it = set.iterator();//利用方法iterator()返回Iterator对象
-
- //进行遍历
- while(it.hasNext()){
- //利用泛型的好处:消除了强转的麻烦。next()方法返回了map的内部接口Entry
- Entry<Character, Integer> entry = it.next();
-
- //利用方法getKey()和getValue()完成输出!
- System.out.print(entry.getKey()+"("+entry.getValue()+")");
- }
- }
- }
复制代码 |