/**
* 输入字符串,然后输出新的字符串,新字符串显示每个字符及其数量
* 如 aaddvvvf 显示 a2b2v3f1
*
* */
public static String string2String() {
HashMap<String, Integer> m = new HashMap<String, Integer>();
int count = 0;
final String s = "" + "aasssssdddddfffggh";
char c = s.charAt(0);
for (int i = 0; i < s.length(); i++) {
if(!m.containsKey(String.valueOf(s.charAt(i)))){
m.put(String.valueOf(s.charAt(i)),1);
}
if (s.charAt(i) == c) {
count++;
} else {
m.put(String.valueOf(c), count);
c = s.charAt(i);
count = 1;
}
}
StringBuffer result = new StringBuffer();
Iterator<Map.Entry<String, Integer>> i = m.entrySet().iterator();
while (i.hasNext()) {
Map.Entry<String, Integer> e = i.next();
String key = e.getKey();
int value = e.getValue();
if (TextUtils.isEmpty(key)) {
continue;
}
result.append(key).append(value);
}
String re = result.toString();
System.out.println("string2String:" + re);
return re;
}
I/System.out: string2String:d5a2f3s5h1g2
数量统计对了,但是乱序了,因hashmap 根据hashcode放置数据,应该使用LinkedHashMap。