读书人

从资料中得到出现次数最多的字符

发布时间: 2012-11-07 09:56:10 作者: rapoo

从文件中得到出现次数最多的字符

package cn.dbzhuan.test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class TestFileToMap {
?
?public static void main(String args[])
?{
??TestFileToMap map = new TestFileToMap();
??map.readFile();
??
?}
?
?
?/**
? * 读取文件到map中,字符作为健,出现的次数作为值
? * @return
? */
?public Map<Character, Integer> readFile()
?{
? ??HashMap<Character, Integer> map = new HashMap<Character, Integer>();
??try
??{
???BufferedReader br = new BufferedReader(new FileReader(
?????"E://test//digist.txt"));
??
?
??char[] str = null;
??
??str = br.readLine().trim().toCharArray();
??int[] count = new int[str.length] ;
??for(int i = 0; i<str.length ; i++ )
??{
????count[i] = 1;
????char temp = str[i];

????if (map.containsKey(temp))
????{
?????count[i] = map.get(temp);

?????count[i]++;
????}

????map.put(temp, count[i]);
???}
??}
??catch(Exception e)
??{
??e.printStackTrace();?
??}
??
//?Collection<Integer>? values = map.values();
//?
//?Integer max = 1 ;
//?for(Iterator it =?values.iterator();it.hasNext();)
//?{
//? ??
//??? Integer count?= (Integer) it.next();
//??? if(count > max)
//??? {
//??? max = count ;
//???
//??? }
//??
//?}
//?System.out.println("最大次数" +max? );
//??
//??
//??return map ;
//??
//?}
??readMap(map);
??
?return map;
??????
?}
?
?
?/**
? * 比较map中字符出现的个数,得出最多次数的字符和次数
? * @param map
? */
?public void? readMap(HashMap<Character, Integer> map)
?{
???? Set<Entry<Character, Integer>> set =?map.entrySet();
??????? Integer max = 1 ;
??????? Character result = null;
??????? for(Iterator<Entry<Character, Integer>> it = set.iterator() ;it.hasNext();)
??????? {
????Entry<Character, Integer> cha =?? it.next();
????Character chaex = cha.getKey();
????Integer count = map.get(chaex);
????if (count > max)
????{
???????????????? max = count;
?????result = cha.getKey();
????}

???}
???????
???? System.out.println("出现最多的字符是:" + result + "出现的次数是" +max? );
?}
}

?

这是以前接触java集合时的一些练习,现在想拿来整理下!还会完善!

特点:

1性能还好,只查找了一遍文件

问题:

1.汉字匹配不到

2.次数最多的相同的字符不能得到

读书人网 >编程

热点推荐