在開源中國中看到有一篇關於這個的,因此一時興起,可能不如他寫的好,不過也是另外一種思路。java
package 六二;字符串
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;get
public class 計算一個字符串中各個字符出現的次數 {
public static void main(String[] args) {hash
String str = "abcdeaaaa";
HashMap<Character, Integer> strhash = new HashMap<Character, Integer>();
int num = 0;
int count = 0;
for (int i = 0; i <= str.length() - 1; i++) {
char c = str.charAt(i);
int temp = 0;
for (int j = 0; j <= str.length() - 1; j++) {
num = str.indexOf(c, temp);
if (num != -1) {
count++;
temp = num + 1;
continue;it
}io
else {
strhash.put(c, count);
count = 0;
break;
}class
}
}效率
// List<Integer> strlist=new ArrayList<Integer>();
// Collection<Integer> strcount=strhash.values();
// Iterator<Integer> iter=strcount.iterator();
// while(iter.hasNext())
// {
// int a=iter.next();
// strlist.add(a);
// System.out.println(strlist);
// }import
// 上面是訪問hashmap中的value值
// 下面是得到一個作爲map.entry(k,v)作爲一個總體的值
// 並且是效率最高的一種寫法。hashmap
Iterator iter = strhash.entrySet().iterator();// 返回一個set集合
while (iter.hasNext()) {
Map.Entry<Character, Integer> entry = (Map.Entry<Character, Integer>) iter
.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "=" + value);
}
// Set<K> keySet()
// 返回此映射中包含的鍵的 Set 視圖。 寫的很清楚就是key的Set
// Set<Map.Entry<K,V>> entrySet()
// 返回此映射中包含的映射關係的 Set 視圖。
// 也是一個Set,而Set中每一個元素是內部類Map.Entry。
// 下面也是一種得到的方法
// 思路是經過先得到hashmap中的鍵值,而後用get方法來得到相對應的值。可是這個值相對來講是效率低的。
Iterator iter1 = strhash.keySet().iterator();
while (iter1.hasNext()) {
Object key = iter1.next();
Object value = strhash.get(key);
System.err.println(key + "=" + value);
}
}
}