如何獲取字串中相同字元出現的次數

javascript前鋒發表於2015-03-05

任務:

1、統計字元陣列中相同資料個數。

2、需要用set實現。

3、需要用iterator實現。

第一次出現時,我只是簡單的在紙上寫了點思路,事後發現除了一些具體屬性可能因為不熟悉之外,大體還是成功的:

我將思路化為程式碼後實現如下:

public static void main(String[] args) {
		String[] arrays=new String[]{"zhangsan","andi","andi","zhangsan","wangwu","pianliu"};
		Arrays.sort(arrays, new SortComparator());
		Set<String> setData=new HashSet<String>();
		for(int i=0;i<arrays.length;i++){
			setData.add(arrays[i]);//具備排重功能
		}
		//計算相同資料出現的次數
		Map<String,Integer> countMap=new HashMap<String,Integer>();
			for(int j=0;j<arrays.length;j++){
				if(countMap.containsKey(arrays[j])){//如果存在那麼獲取value自增
					int count=countMap.get(arrays[j])+1;
					countMap.put(arrays[j], count);
				}else{
					countMap.put(arrays[j], 1);
				}
		}
		//遍歷set
		Iterator<String> it= setData.iterator();//不重複資料
		while(it.hasNext()){
			String data=it.next();
			System.out.print(data+" = "+countMap.get(data));
			System.out.println();
		}
	}
很明顯,程式碼中我新增了一個比較類SortComparator,本來我打算將資料統計完成後,按照字母從小到大的方式輸出,雖然是畫蛇添腳,但是終歸還是比較有意思,上面的程式碼並沒有實現到這點,主要原因是set和map儲存資料是無序的,如果非要實現,需要在程式碼末端進行修改。

class SortComparator implements Comparator<String>{

	public int compare(String o1, String o2) {
		char c1 = ((String) o1).charAt(0);
		char c2 = ((String) o2).charAt(0);
		return c1-c2;
	}
	
}
擴充套件:該功能可以用於統計文章中的相同字數或者詞重複出現多少次。




相關文章