获取该字符串中每一个字母出现的个数
“GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID”
我在网上找到的代码是这样的,但因为我没有学过集合类,所以看不懂,希望大家能给我详细解析一下
package itcast.Exam;
import java.security.KeyStore.Entry;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
/*
* 6、获取该字符串中每一个字母出现的个数(10)。
* “GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID”
*
* 这题因为在基础方面的集合类学习的不是很深入所以感觉不是很懂!
* 还有待继续学习!
*/
public class Exam6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID";
System.out.println("每个字符串出现的个数如下:");
System.out.println(strCount(str));
}
public static String strCount(String str){
char[] ch = str.toCharArray();
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for (int i = 0; i < ch.length; i++) {
Integer value = map.get(ch[i]);
int count = 1;
if (value != null) {
count = value + 1;
}
map.put(ch[i], count);
}
return toNewString(map);
}
public static String toNewString(Map<Character, Integer> map){
StringBuilder sBuilder = new StringBuilder();
Iterator<java.util.Map.Entry<Character, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
java.util.Map.Entry<Character, Integer> entry = iterator.next();
char ch1 = entry.getKey();
int value = entry.getValue();
sBuilder.append(ch1+"{"+value+"}"+" ");
}
return sBuilder.toString();
}
}
java character iterator string
前天刚学了Map,晚上回去把这段代码试一下。 我突然发现CSDN的表情很酷啊,呵呵顶楼上,,,如果全是大(小)写字母可以用数组。Map<K,V>是通用解法
K:键,V:值Map是一个集合
对应一个主键和一个值
这个题中的map
主键为这个字母,值为次数。
就这些。
如果看不懂真的说明你java还学得比较浅。
继续努力吧。其实代码很简单,而且你也分析出原因了。你不会集合类。。
推荐你看一下Map,然后就能明白代码的意思了。最好的做法其实是用数组
索引代表字母,值标记个数。
反正也就26个字母。
正解集合 ,是java基础中很重要的一部分,lz去看看吧