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.次数最多的相同的字符不能得到