我将你的代码改了一下,你可以看看。我分别使用了map.keySet()方法和map.entrySet()方法。运行过了,可是实现的所要求的功能。
import java.util.*
public class Test {
public static void main(String[] args) {
String str = "abcdekka27qoA*&AAAq";
System.out.println(ToCharArray(str));
}
private static String ToCharArray(String str) {
char[] chr = str.toCharArray(); //字符串转换为字符串数组,方便遍历
Map<Character, Integer> map = new TreeMap<Character, Integer>();
int count=0;
for(int i=0;i<chr.length;i++){
if((chr>='a' && chr<='z') || (chr>='A' && chr<='Z')){ //这条语句是重点
// 将字母作为键存放Map中,Integer接收字母
Integer value=map.get(chr);
if(value!=null)
count=value;
count++;
map.put(chr, count);
count=0;
}
}
//保存将从集合中迭代出来的字母和次数
StringBuilder sb=new StringBuilder();
//Map 转成Set,使用keySet
Set<Character> keySet = map.keySet();
Iterator<Character> it = keySet.iterator();
while(it.hasNext()){
Character key = it.next();
Integer values = map.get(key);
//Map.Entry<Character, Integer> me =(Entry<Character, Integer>)it.next();
//加到容器sb中
//sb.append(key + "(" + values + ")");
}
//使用Map.Entry,它的用法你可以参看毕老师的视频和、API文档。
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
Iterator<Map.Entry<Character, Integer>> it1 = entrySet.iterator();
while(it1.hasNext())
{
Entry<Character, Integer> entry = it1.next();
Character key = entry.getKey();
Integer value = entry.getValue();
sb.append(key + "(" + value + ")");
//System.out.println(it1.next().getClass().getName());
}
return sb.toString();
}
}
|