package Project01;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Code03 {
public static void main(String[] args) {
String[] s= {"hello","python","hello","java","very","good","java","is","good","than","python","python"
,"is","better","than","c++","python","java","good","good"};
HashMap<String, Integer> MyMap=new HashMap<String, Integer>(); //用单词当键,用单词出现的次数当值
for (int i = 0; i < s.length; i++) {
if(MyMap.get(s[i])==null) { //判断集合中是否有指定健的值(判断)
MyMap.put(s[i],1); //如果这个集合还没有存入当前单词,就把这个单词已键的形式存入,并设置值为出现次数1
}
else
{
int num=MyMap.get(s[i]); //如果这个集合已经存入当前单词,就得到这个单词的值
MyMap.put(s[i],++num); //把当前单词重新存入替换之前的,并把这个单词的出现次数的值+1存入
}
}
int[] valueArr=new int[s.length]; //定义数组存储单词出现的次数
String[] keyArr=new String[s.length]; //定义数组存储单词
int count=0; //定义变量控制数组
Iterator it=MyMap.entrySet().iterator(); //获取映射集合的迭代器
while(it.hasNext()) { //判断下一个是否有值
Map.Entry entry=(Entry)(it.next()); //强制转换为Entry
keyArr[count]=(String)entry.getKey(); //获取当前的键(也就是单词)存储在数组中
valueArr[count]=(int)entry.getValue(); //获取当前键的值(也就是出现次数)存储在数组中
System.out.println(keyArr[count]+"\s出现"+valueArr[count]+"次"); //打印每个单词和出现次数
count++;
}
Sort(keyArr,valueArr); //调用排序方法
}
//创建排序方法
public static void Sort(String[] keyArr,int[] valueArr) {
String[] str=new String[3]; //定义字符串数值存在出现频率最大的三个单词;
for (int j = 0; j < valueArr.length-1; j++)
for (int k = 0; k < valueArr.length-j-1; k++) {
if(valueArr[k]<valueArr[k+1]) {
int temp1=valueArr[k];
valueArr[k]=valueArr[k+1];
valueArr[k+1]=temp1;
String temp2=keyArr[k];
keyArr[k]=keyArr[k+1];
keyArr[k+1]=temp2;
}
}
for (int j = 0; j <3; j++)
str[j]=keyArr[j]+"出现次数为:"+valueArr[j];
System.out.println("出现频率最高的单词为:"+str[0]+"\t"+str[1]+"\t"+str[2]);
}
}