本帖最后由 谢冬 于 2013-3-15 13:18 编辑
- package com.itheima.map;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- import java.util.TreeMap;
- /*
- * 需求:或取一个字符串中每个字母出现的次数,打印结果如:a 3 b 4
- * 分析:通过打印结果发现,每个字母都有对应的次数,具有映射关系,可以选择Map集合
- * 思路:1:将字符串拆分成一个数组
- * 2:定义TreeMap集合
- * 3:遍历字符数组,将每一个字母作为键去查Map集合,如果返回null,将该字母和1存入到Map集合中;
- * 如果返回不是null,说明该字母在Map集合内已经存在,并有对应的次数,那么就获取值并进行自增,然后将字母和自增后的次数存入集合
- * 4:遍历集合
- * */
- public class TreeMapDemo2 {
- public static void main(String[] args) {
- TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
- String str = "bbbccccddddaaaffeeee";
- String[] arr = str.split("");
- for(String item : arr)
- {
- Integer value = tm.get(item);
- if(value == null)
- tm.put(item, 1);
- else{
- value++;
- tm.put(item, value);
- }
- }
- Set<Map.Entry<String, Integer>> set = tm.entrySet();
- Iterator<Map.Entry<String, Integer>> it = set.iterator();
- while(it.hasNext())
- {
- Map.Entry<String, Integer> map = it.next();
- String key = map.getKey();
- int value = map.getValue();
- System.out.println(key + " " + value);
- }
- }
- }
复制代码 输出结果:- 1
- a 3
- b 3
- c 4
- d 4
- e 4
- f 2
- 该问题已解决,只是奇怪的是,如果通过拆分获得的数组,为什么下标要从1开始?
复制代码 输出结果中的1是怎么回事?是怎么输出的?怎么去掉 |