技术开发 频道

统计字符串中的重复部分并整理输出

【IT168技术文档】

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] + " "); } } }
原文地址
0
相关文章