import java.util.*;
/*
* @author 诗语江南
* @function 统计字符串中的重复部分并整理输出,
* 我用了两种方法来做.
*/
public class StrShowTimes{
public static void main(String[] r){
String str = "帅哥,美女,帅哥,野兽,美女,帅哥";
Map s1 = strTimesWithMap(str);
Set keys = s1.keySet();
Iterator it = keys.iterator();
while(it.hasNext()){
String key = (String)it.next();
int value = (Integer) s1.get(key);
System.out.print(key + ": " + value+ ", ");
}
System.out.println();
strTimesWithArray(str);
}
//使用HashMap的方法,该方法比较简单
public static Map strTimesWithMap(String str){
//key: 子字符串 String , value: 重复次数 Integer
Map strMap = new HashMap();
String[] strArr = str.split(",");
for(int i =0; i< strArr.length ; i++){
String key = strArr[i] ;
if(strMap.containsKey(key)){
int value = (Integer) strMap.get(key);
strMap.put(key,++value);
}else{
strMap.put(key,1);
}
}
return strMap;
}
//使用双数组的方法,一个字符串数组存字符串
//一个整形数组存与字符串数组对应位置上的字符串出现的次数
public static void strTimesWithArray(String str){
String[] tempArr = str.split(",");
int i , end = 0 , len = tempArr.length;
String[] strArr = new String[len];
int[] intArr = new int[len];
boolean isChange ;
for(i = 0 ; i < len ; i++){
isChange = false;
for(int j = 0 ; j < end ; j++){
if(tempArr[i].equals(strArr[j])){
intArr[j] = intArr[j] +1 ;
isChange = true;
break;
}
}
if(isChange) continue;
strArr[end] = tempArr[i];
intArr[end++] = 1;
}
for(i = 0 ; i < end ; i++){
System.out.print(strArr[i] + ": " + intArr[i] + " ");
}
}
}
posted on 2007-10-05 13:36
诗语江南 阅读(1668)
评论(3) 编辑 收藏 所属分类:
Core JAVA