說明:
1.如題所示,這種類型這我們做項目的時候經常遇到,是非常常見的類型。
2.這里面向的對象是String 類型。對於其他類型包括自定義的對象也很容易移植,但是對於String和其他基本變量類型由於可以進行大小比較,所以這些類型的數據可以排序后再統計其出現的次數,這樣可以用其他方法來進行統計。
過程:
1.字符串數組只遍歷一次。
2.設計一個Hash,用於保存Hash后的String值,和其出現的次數。可以用HashMap(key,value)來實現。
3.對於每一個string ,進行Hash處理。
4.輸出Hash。
類和方法設計:
類:StringSameCount.java
- HashMap map;
/**
對於每一個String,插入Hash
**/
+hashInsert(String)
{
String 已存在:map.put(string,value++);
String不存在:map.put(string,1);
}
+HashMap getHashMap()
{
return map;
}
最后的StringSameCount.java源代碼(測試可用)如下:
import java.util.HashMap;
public class StringSameCount {
private HashMap map;
private int counter; //用於統計 map中的value
StringSameCount()
{
map=new HashMap<String,Integer>();
}
/**
* 用於在hashmap中插入字符串
* @param string
*/
public void hashInsert(String string){
if (map.containsKey(string)){
counter=(Integer)map.get(string);
map.put(string,++counter);
}
else{
map.put(string, 1);
}
}
public HashMap getHashMap(){
return map;
}
}
測試調用如下:
import java.util.HashMap;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
StringSameCount ssc=new StringSameCount();
ssc.hashInsert("ab");
ssc.hashInsert("bc");
ssc.hashInsert("ab");
ssc.hashInsert("ab");
ssc.hashInsert("bc");
ssc.hashInsert("bcd");
ssc.hashInsert("c");
HashMap map=ssc.getHashMap();
Iterator it =map.keySet().iterator();
String temp;
while(it.hasNext()){
temp=(String)it.next();
System.out.println(temp+"出現了"+map.get(temp)+"次");
}
//也可以直接輸出map;
System.out.println(map);
}
}
最后得到的輸出結果:
c出現了1次
bcd出現了1次
ab出現了3次
bc出現了2次
{c=1, bcd=1, ab=3, bc=2}