黑马程序员技术交流社区
标题:
Java基础学习日记 - TreeSet练习
[打印本页]
作者:
qihuan
时间:
2015-7-11 23:26
标题:
Java基础学习日记 - TreeSet练习
package practice;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;
/**
* 需求:获取字符串中字母出现的次数。
* 打印结果:a(1)c(2)...
* 分析:通过结果发现,每一个字母都有对应的次数,数字与字母之间存在映射关系。
* 所以,选择map集合。
* 思路:
* 1.将字符串转换成字符数组,对每一个字母进行操作。
* 2.定义一个Map集合,因为打印结果的字母有顺序,所以选择TreeMap集合。
* 3.遍历字符数组
* 将每一个字母作为键去查Map集合。
* 如果返回null,将该字母和和1存入到Map集合中。
* 如果返回不为null,该字母在Map集合中已存在,就获取该次数并自增,然后该字母和自增后的次数存入Map集合中。
* 4.将Map集合中的数组变成指定的字符串形式返回。
* @author Qihuan
*
*/
public class TreeSetTest2 {
public static void main(String[] args) {
String str = charCount("aaabbcccdefeddcbbbaaa");
System.out.println(str);
}
public static String charCount(String str){
//将字符串转换为字符数组
char[] chs = str.toCharArray();
//定义一个TreeMap集合
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
//定义计数器
int count = 0;
//遍历字符数组
for (int i = 0; i < chs.length; i++) {
//将chs[i]作为键,去查找集合,返回一个值
Integer value = tm.get(chs[i]);
//判断value是否为空,如果不为空,value赋值到count上
if(value != null)
count = value;
//如果为空,count加一,存的是(chs[i],1)
count ++;
tm.put(chs[i], count);
//count初始化
count = 0;
// if (value == null) {
// tm.put(chs[i], 1);
// }else{
// value = value + 1;
// tm.put(chs[i], value);
// }
}
//新建缓冲区,用于接收字符串
StringBuilder sb = new StringBuilder();
Set<Character> keySet = tm.keySet();
//iterator遍历集合
for(Iterator<Character> it = keySet.iterator();it.hasNext();){
Character k = it.next();
Integer v = tm.get(k);
sb.append(k+"("+v+")");
}
//返回结果
return sb.toString();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2