统计字符串数组中每个字符串所出现的次数

说明:

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}

原文地址:https://www.cnblogs.com/csophys/p/2366401.html