举例如下:
String="aa bb; cc dd ee; aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;"
如何统计以“;”为分隔符的每个字符串的频率,并输出。
//上面代码有问题
[code="java"]
//输入字符
String s ="aa bb; cc dd ee; aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;"
//用正则表达式来分割";" 产生N个字符串
String[] ss = s.split(";");
//统计字符串
map map = new ConcurrentHashMap();
for(String str : ss ) {
// 如果存在,就获得当前值,然后+1放入map;不存在,放入1
int value = map.get(str) == null ? 1, map.get(str) + 1;
map.put(str, value);
}
}
for(Map.Entry entry : map.entrySet) {
System.out.println(String.format("字符串是 - [%s],出现了[%n]次"), entry.getKey, entry.getValue);
}
[/code]
[code="java"]
String s ="aa bb; cc dd ee; aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;"
String[] ss = s.split(";");
map map = new ConcurrentHashMap();
for(String str : ss ) {
int value = map.get(str) == null ? 0, map.get(str) + 1;
map.put(str, 0);
}
}
[/code]
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class CountMap {
public static void main(String[] args) {
String s="aa bb; cc dd ee;aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;";
String[] arrStr=s.split(";");
Map map=new HashMap();
for (int i = 0; i < arrStr.length; i++) {
if(map.get(arrStr[i])!=null){
map.put(arrStr[i], map.get(arrStr[i])+1);
}else{
map.put(arrStr[i], 1);
}
}
for(Entry entry : map.entrySet()){
System.out.println(entry.getKey()+"->"+entry.getValue());
}
}
}[code="java"][/code]
[code="java"]import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class CountMap {
public static void main(String[] args) {
String s="aa bb; cc dd ee;aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;";
String[] arrStr=s.split(";");
Map map=new HashMap();
for (int i = 0; i < arrStr.length; i++) {
if(map.get(arrStr[i])!=null){
map.put(arrStr[i], map.get(arrStr[i])+1);
}else{
map.put(arrStr[i], 1);
}
}
for(Entry entry : map.entrySet()){
System.out.println(entry.getKey()+"->"+entry.getValue());
}
}
}[/code]
[code="java"]
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class CountString {
public static void main(String[] args) {
// 源字符串
String sourceStr = "aa bb; cc dd ee; aa bb; cc dd; cc ee; cc dd ee; aa; bb; cc;";
// 分割字符串
String[] strs = sourceStr.split(";");
// 用户记录字符出现次数的Map对象
Map<String, Integer> countMap = new HashMap<String, Integer>();
// 循环记录每个字符串出现的次数
for (String str : strs) {
str = str.trim(); // 特别注意, 这里应该要去掉左右边的空格, 否则统计出现不正确
countMap.put(str, countMap.containsKey(str) ? countMap.get(str) + 1 : 1);
}
// 打印出各字符出现的次数
for (Entry<String, Integer> entry : countMap.entrySet()) {
System.out.println("字符串:" + entry.getKey() + " 出现次数:" + entry.getValue());
}
}
}
[/code]
另外,一般需要分割字符串的时候,使用commons-lang.jar包功能更为强大
[code="java"]
org.apache.commons.lang.StringUtils
StringUtils.split(str);
StringUtils.split(str, separatorChars)
StringUtils.splitByWholeSeparator(str, separator)
StringUtils.splitPreserveAllTokens(str)
StringUtils.splitPreserveAllTokens(str, separatorChars)
[/code]