黑马程序员技术交流社区
标题:
Map集合对字符串的操作
[打印本页]
作者:
谢冬
时间:
2013-3-15 12:20
标题:
Map集合对字符串的操作
本帖最后由 谢冬 于 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是怎么回事?是怎么输出的?怎么去掉
作者:
许鑫星
时间:
2013-3-15 13:16
for (String item : arr) {
//排除数组中的空值
if (item != null && !"".equals(item)) {
Integer value = tm.get(item);
if (value == null)
tm.put(item, 1);
else {
value++;
tm.put(item, value);
}
}
}
复制代码
你用了split之后,数组中的第一个元素是个空值,所以导致你输出了一个1,排除即可
作者:
陈丽莉
时间:
2013-3-15 13:37
若还有问题,请继续追问;如果没问题了,请将帖子分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2