统计字符串数组中每个字符串所出现的次数
说明:
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}